51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 810|回复: 0
打印 上一主题 下一主题

[selenium] Selenium永远的经典面试25题(附答案)

[复制链接]
  • TA的每日心情
    无聊
    2024-10-29 09:20
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2022-8-18 15:27:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    (1)selenium的工作原理?
           ① 脚本启动driver
           ② driver去驱动浏览器作为远程服务器
           ③ 执行脚本发送请求
           ④ 服务器解析请求作出相应操作,并返回给客户端(脚本)

    (2)selenium自动化页面元素找不到存在异常的原因?
            ① 元素定位错误
            ② 页面加载时间过慢,需要查找的元素程序已经完成,单页面还未加载,此时可以加载页面等待时间
            ③ 有可能元素包含在iframe或者frame里面,需要切换。

    (3)如何去定位属性动态变化的元素?
            属性动态变化是指该element没有固定的属性值,只能通过相对位置定位。
            第一种方法:用findelements遍历
            第二种方法:通过xpath的轴    parent   /   following-sibling   /   precent-sibling

    (4)如何去定位页面上动态加载的元素?
            触发动态事件,继而findelement;如果是动态菜单,需要一级一级的find。

    (5)selenium调用js(execute_script),有哪些场景?
            ① 对input执行输入
            ② 对富文本框的操作
            ③ 滚动到指定位置操作

    (6)selenium如何处理web弹窗?js弹窗?
           需要使用driver.switch_to.alert()

    (7)selenium可以处理window弹窗吗?
           selenium本身是不可以处理windows弹窗的,但是可以借助AutoIT小工具来完成对windows弹窗的操作。比如 上传下载附件等

    (8)如何在定位元素后高亮元素(以调试为目的)?
            使用javascript将元素的border或者背景颜色改成黄色或其他颜色即可

    (9)selenium是否支持桌面应用软件的自动化测试?
            不支持。selenium是根据网页元素的属性来确定范围元素的

    (10)selenium是否有读取excel文件的库?
            没有,需要借助第三方工具。例如Apache PIO插件

    (11)selenium是否可以向页面发送鼠标滚轮操作?
            不能。

    (12)如何在webdriver中调用应用程序?
           driver.get('url')  或者 driver.navigate().to('url')

    (13)selenium中常见的异常?
           NoSuchElementException    找不到页面元素异常
           ElementNoInteractac tableException

    (14)selenium为什么不推荐使用xpath定位?
           selenium使用xpath定位时采用遍历页面的方式,性能指标较差。另外xpath定位有通过绝对路径定位的,有时会不准确;
           而用css选择器定位比较简洁,运行速度更快,通常用于性能要求严格的场景。

    (15)如何判断一个页面上元素是否存在?
           法1:用try...except  在代码块加上
           法2:用elements定义组元素方法  然后根其元素个数len()<1  存在返回True,  不存在则返回False
           法3:结合WebDriverWait和excepted_conditions条件判断(强烈推荐)
                    显示等待,每间隔1秒判断一次,30秒超时,存在返回True,不存在则返回False

    (16)如何定位动态元素?
           动态元素有两种情况:
                  一个是属性动态,定位时,若id是动态的,就不要用id定位,用其他定位元素方法
                  另一个还是这个元素一会在页面上方,一会在下方,飘忽不定,定位方法也是一样,根据元素属性定位(元素的tag name属性是不会变的,动的只是class属性和style属性)

    (17)如何通过子元素定位父元素?
           通过父元素定位子元素,可以通过二次定位来找到。
                 第一种:通过子元素定位父元素,selenium提供了parent方法,但是只能定位到父元素,却不能获取元素属性,也不能操作。
                 第二种:通过xpath的语法直接定位。  如.//*[@name="hello"]/..   两个点代表父级元素。

    (18)如何截取一个元素的图片,不要截取全部图片?
           首选截取当前页面并自定义保存
           然后根据要截取元素图片的属性来获取该元素的坐标和大小 ele.location    ele.size
           然后分别left = ele.location['x']
                         top = ele.location['y']
                         right = ele.location['x'] + ele.size['width']
                         bottom = ele.location['y'] + ele.size['height']
           获取该元素的图片的坐标大小
           最后,再次打开刚开始保存的,通过image类中的crop方法(相当于拷贝该元素的一个矩形区域),然后做保存操作就可以了。

    (19)一个元素明明定位了,点击无效(也没报错),如何解决?
           使用js点击,selenium有时候点击元素时会失效
           #  js 点击
           js = 'document.getElementById('baidu').click()'
           driver.execute_script(js)

    (20)如何提高脚本的稳定性?
           首先只要页面一直没变过,说明定位方法是没问题的。
           优化方向:① 自己写相对路径,多用id为节点查找,少用右键复制xpath,那种不稳定。
                             ② 第二个影响因素就是等待了,sleep等待尽量少用(影响执行时间)
                             ③ 定位元素方法重新封装,结合WebDriverWait和excepted_conditions判断元素方法,自己封装一套定位元素方法

    (21)提高selenium脚本的执行速度方式?
           减少不必要的操作。
           页面加载过多并且不影响测试,可设置超时时间中断页面加载。
           设置等待时间时,可以sleep()固定的时间,检测到元素出现后中断等待也可以提高速度。
           配置testNG实现多线程,在编写测试用例时,一定要实现松耦合,在服务器允许的情况下尽量设置多线程运行,提高执行速度。

    (22)selenium自动化时,在平时遇到过哪些问题?如何解决的?
           比如动态id  、有iframe的情况、没加等待等因素

    (23)selenium中隐藏元素定位,你该如何做?
           隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,操作元素是指click 、clear 、send_keys等这些方法)。我们可以用js来操作隐藏元素。js和selenium不同,只有页面上有的元素(在dom里面的)都能正常操作。

    (24)上传图片的几种方式?
           send_keys和AutoIT工具实现.

    (25)截图应当怎么操作?
           driver.get_screenshot_as_file('C:\test.jpg')


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 01:32 , Processed in 0.063942 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表