隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,操作元素是指click 、clear 、send_keys等这些方法)。我们可以用js来操作隐藏元素。js和selenium不同,只有页面上有的元素(在dom里面的)都能正常操作。
21、如何判断一个页面上元素是否存在?
法1:用try...except 在代码块加上
法2:用elements定义组元素方法 然后根其元素个数len()<1 存在返回True, 不存在则返回False
法3:结合WebDriverWait和excepted_conditions条件判断(强烈推荐)。
例子:WebDriverWait(driver,30,1).until(excepted_conditions.title_contains(u"软件测试部落")) #判断title,每间隔1秒判断一次,30秒超时,存在返回True,不存在则返回False
22、page object设置模式中,是否需要在page里定位的方法中加上断言?
一般不要,除非是要判断页面是否正确加载。
23、driver.close() 和driver.quit() 有什么区别?
driver.close() 关闭用户当前正在使用的Web浏览器窗口,quit()方法用于关闭程序已打开的所有窗口。
24、selenium 上传文件操作,需要被操作对象的type属性是什么?
file
25、selenium如何处理web弹窗?js弹窗?
需要使用driver.switch_to.alert()
26、如何在webdriver中调用应用程序?
driver.get('url') 或者 driver.navigate().to('url')
27、selenium中常见的异常?
NoSuchElementException、ElementNoInteractac、tableException、NoAlertPresentException
28、怎样去选择一个下拉框中的value=xx的option?
需要二次定位 :①拿到所有的option;②遍历option的value并与后台拿到的值进行比较(相同则选择该option)。
29、点击链接以后,selenium是否会自动等待该页面加载完毕?
不会。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。
30、selenium 是否可以调用js来对dom对象进行操作?
可以
31、selenium 是否可以向页面发送鼠标滚轮操作?
不能。(可利用javaScript来实现拖拽页面滚动条。)
32、selenium可以处理window弹窗吗?
selenium本身是不可以处理windows弹窗的,但是可以借助AutoIT小工具来完成对windows弹窗的操作,比如 上传下载附件等。
33、如何在定位元素后高亮元素(以调试为目的)?
使用javascript将元素的border或者背景颜色改成黄色或其他颜色即可。
34、selenium是否有读取excel文件的库?
没有,需要借助第三方工具。例如Apache PIO插件。
35、上传图片的几种方式?
send_keys和AutoIT工具实现.
36、selenium是否支持桌面应用软件的自动化测试?
不支持。selenium是根据网页元素的属性来确定范围元素的。
37、selenium是否支持用例的执行的引擎。
引擎好比就是一个发动机。selenium是没有关于测试用例和测试套件管理和执行的模块。我们需要借助第三方单元测试框架来实现用例管理和用例的执行。例如Java中有Junit或者testNG,python中有unittest单元测试框架。
38、列举selenium的局限性有哪些?
Selenium仅支持基于Web的应用程序的测试;
无法使用Selenium测试移动应用程序,可以选择Appium进行移动端功能测试;
验证码和条形码阅读器无法使用Selenium进行测试;
Selenium本身不具有生成测试报告的功能,以JAVA为例,需要结合第三方框架如TestNG或JUnit来生成测试报告。