Selenium Webdriver常见错误、异常解答

Q:启动IE浏览器时突然报下面错误,不能正常使用。

    WebDriverException: Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 94%. It should be set to 100%

A:原因是IE页面的使用的的显示比例不是100%导致的,把页面显示调整成100%恢复正常。



Q:找不到元素,脚本报NoSuchElementException:Unable to find element 异常怎么办?

    NoSuchElementException: Message: no such element 当找不到元素的时候,就会抛这样的异常,应该如何解决呢?

A:这个问题不是某一个特定原因造成的,与自己的脚本开发经验有关系,提供解决思路,按照这个思路挨个去找,相信你能解决。

  1.     检查使用的元素标识是否正确 如: “username” 中写成了 “usernome”

  2.     检查使用查找的元素标签是否是唯一的 。如:在HTML代码元素中只能有一个 “id = kw” 的元素

  3.     检查查找的元素是否在frame标签下。如果是需要写切换到frame中在进行查找

  4.     检查元素属性是否是会变动的,可以尝试使用其它的(如:css、xpath等)属性查找看看

  5.     检查元素属性是否是隐藏的

  6.     可以在元素查找前面加个等待时间试试 

  7.     使用Webdriver实在无法定位的话,使用Js进行定位。 


Q: 启动firefox浏览器,报“Plugin Container for Firefox已停止工作” 处理办法?



A:添加用户环境变量 MOZ_DISABLE_OOP_PLUGINS,值为1。

或者:尝试删除firefox安装目录中的 plugin-container.exe 文件

如果firefox、ipython打开着,关闭进程,重启firefox、ipython


Q:启动firefox会加载火狐官网响应特别慢,如何去掉这个加载提升跳转URL速度

A:修改firefox-profile文件,删除默认的profile,添加一个自定义的profile

    进入CMD 输入 firefox -ProfileManager -no-remote 打开配置项进行删除和创建。

修改代码中启动Firefox的驱动为self.driver = webdriver.Firefox(firefox_profile='selenium',timeout=10)   

 

Q:如何使用默认已存在的profile启动firefox

A:参考:http://stackoverflow.com/questions/11095294/using-the-default-firefox-profile-with-selenium-webdriver-in-python

使用已存在profile启动firefox可以自动登陆已经登陆过的站点。代码如下:

 
  1. fp = webdriver.FirefoxProfile('/path/to/your/existing/profile')

  1. browser = webdriver.Firefox(fp)

如何创建一个定制的profile?戳这里:https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

这里在windows上有个坑,就是路径分隔符在windows上是\而不是,把这个弄明白然后指定对路径基本就可以了。

PS:这里还有另一个坑。就是如果你使用默认的profile的话,请一定关闭friefox以后再运行代码,否则会因为profile的文件锁问题而发生异常。就是说

一次只能打开一个firefox实例,如果你使用默认的profile的话。

Q:如何在打开Firefox的同时打开firebug ?  

A:首先下载Firebug XPI文件(这个就是friefox的扩展程序文件--by乙醇),然后再调用firefox profileadd_extension方法。

 
  1. from selenium import webdriver

  2. fp = webdriver.FirefoxProfile()

  3. fp.add_extension(extension='firebug-1.8.4.xpi')

  4. fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen

  5. browser = webdriver.Firefox(firefox_profile=fp)

Q:使用switch_to_frame后,如何返回原frame?

A:switch_to_default_content


Q:同级目录导入方法和在pycharm中显示红色下划线但能正常运行的解决方法?

A: 

假设我需要在public\base.py中导入data\all_test.py,首先需要在data中新建一个空白的__init__.py,然后在base.py中写入

 
  1. sys.path.append("..")

  2. from data import all_test


虽然不会报错,但在pycharm中会显示成红色,并且导入的模块中的函数在引用时不会有补全和提示功能。其实导入已经正常了,该问题是pycharm的问题,在pycharm的setting中做如下设置就可以了:

把data或者data的上级目录设置成Sources,此时红色下划线会消失,并且也会有导入函数的补全和提示功能。

备:在pycharm上做了以下设置时,其实不需要sys.path.append("..")也是可以导入的,但这不符合python的语法,如果你这样写,离开了pycharm的环境就会报错,所以还是得加上这一句


Q:Jenkins中控制台中文展示和自动更新代码的变更记录中文描述信息显示乱码,如何解决?

A:在启动Jenkins的启动配置文件中,添加文件编码的参数-Dfile.encoding=utf-8

Windows系统文件路径:Jenkins安装目录中的 jenkins.xml

 
  1. <arguments>-Xrs -Xmx256m -Dfile.encoding=utf-8 -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

Linux RPM包服务安装: /etc/sysconfig/jenkins 文件中配置

           JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dfile.encoding=utf--Dsun.jnu.encoding=utf-8"




Q:在pycharm中经常出现下划线怎么办?

如下图:


A:点击要忽略的错误所在,然后按住ALT+ENTER,在弹出下拉菜单选择ignore errors like this ,就可以快速忽略了,如下图:



Q:出现如下图的错误时怎么处理?

A:检查jar包,将  
selenium-server-standalone-2.41.0.jar(可能jar包版本会出现不一致) 加入到build path中。然后clear up 一下项目即可。


Q:脚本中的元素和组件怎么定义?

A:元素与组件,组件可以包含元素

通常所说的元素,就是指HTML页面,你可以看到的HTML 元素,那么在脚本里面,比如 find_element_by_id("kw1") 就是定位某一个元素,你也可以把它当作组件。

对于组件来说,我们一般会把一些有操作的意义,或者功能,封装在一个方法或者类里面,那么这个方法或者类,就可以看作一个组件。

就像你要定义一个登录组件

 
  1. def  login(user,pass){

  2.    find_element_by_id(user)

  3.    find_element_by_id(pass)

  4.    find_element_by_id("submit").click()

  5. }

这整个方法,就可以看着是一个组件。而user,pass ,submit 就是元素。

Q:启动IE浏览器时突然报下面错误,不能正常使用。

    WebDriverException: Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 94%. It should be set to 100%

A:原因是IE页面的使用的的显示比例不是100%导致的,把页面显示调整成100%恢复正常。



Q:找不到元素,脚本报NoSuchElementException:Unable to find element 异常怎么办?

    NoSuchElementException: Message: no such element 当找不到元素的时候,就会抛这样的异常,应该如何解决呢?

A:这个问题不是某一个特定原因造成的,与自己的脚本开发经验有关系,提供解决思路,按照这个思路挨个去找,相信你能解决。

  1.     检查使用的元素标识是否正确 如: “username” 中写成了 “usernome”

  2.     检查使用查找的元素标签是否是唯一的 。如:在HTML代码元素中只能有一个 “id = kw” 的元素

  3.     检查查找的元素是否在frame标签下。如果是需要写切换到frame中在进行查找

  4.     检查元素属性是否是会变动的,可以尝试使用其它的(如:css、xpath等)属性查找看看

  5.     检查元素属性是否是隐藏的

  6.     可以在元素查找前面加个等待时间试试 

  7.     使用Webdriver实在无法定位的话,使用Js进行定位。 


Q: 启动firefox浏览器,报“Plugin Container for Firefox已停止工作” 处理办法?



A:添加用户环境变量 MOZ_DISABLE_OOP_PLUGINS,值为1。

或者:尝试删除firefox安装目录中的 plugin-container.exe 文件

如果firefox、ipython打开着,关闭进程,重启firefox、ipython


Q:启动firefox会加载火狐官网响应特别慢,如何去掉这个加载提升跳转URL速度

A:修改firefox-profile文件,删除默认的profile,添加一个自定义的profile

    进入CMD 输入 firefox -ProfileManager -no-remote 打开配置项进行删除和创建。

修改代码中启动Firefox的驱动为self.driver = webdriver.Firefox(firefox_profile='selenium',timeout=10)   

 

Q:如何使用默认已存在的profile启动firefox

A:参考:http://stackoverflow.com/questions/11095294/using-the-default-firefox-profile-with-selenium-webdriver-in-python

使用已存在profile启动firefox可以自动登陆已经登陆过的站点。代码如下:

 
 
  1. fp = webdriver.FirefoxProfile('/path/to/your/existing/profile')

  1. browser = webdriver.Firefox(fp)

如何创建一个定制的profile?戳这里:https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

这里在windows上有个坑,就是路径分隔符在windows上是\而不是,把这个弄明白然后指定对路径基本就可以了。

PS:这里还有另一个坑。就是如果你使用默认的profile的话,请一定关闭friefox以后再运行代码,否则会因为profile的文件锁问题而发生异常。就是说

一次只能打开一个firefox实例,如果你使用默认的profile的话。

Q:如何在打开Firefox的同时打开firebug ?  

A:首先下载Firebug XPI文件(这个就是friefox的扩展程序文件--by乙醇),然后再调用firefox profileadd_extension方法。

 
 
  1. from selenium import webdriver

  2. fp = webdriver.FirefoxProfile()

  3. fp.add_extension(extension='firebug-1.8.4.xpi')

  4. fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen

  5. browser = webdriver.Firefox(firefox_profile=fp)

Q:使用switch_to_frame后,如何返回原frame?

A:switch_to_default_content


Q:同级目录导入方法和在pycharm中显示红色下划线但能正常运行的解决方法?

A: 

假设我需要在public\base.py中导入data\all_test.py,首先需要在data中新建一个空白的__init__.py,然后在base.py中写入

 
 
  1. sys.path.append("..")

  2. from data import all_test


虽然不会报错,但在pycharm中会显示成红色,并且导入的模块中的函数在引用时不会有补全和提示功能。其实导入已经正常了,该问题是pycharm的问题,在pycharm的setting中做如下设置就可以了:

把data或者data的上级目录设置成Sources,此时红色下划线会消失,并且也会有导入函数的补全和提示功能。

备:在pycharm上做了以下设置时,其实不需要sys.path.append("..")也是可以导入的,但这不符合python的语法,如果你这样写,离开了pycharm的环境就会报错,所以还是得加上这一句


Q:Jenkins中控制台中文展示和自动更新代码的变更记录中文描述信息显示乱码,如何解决?

A:在启动Jenkins的启动配置文件中,添加文件编码的参数-Dfile.encoding=utf-8

Windows系统文件路径:Jenkins安装目录中的 jenkins.xml

 
 
  1. <arguments>-Xrs -Xmx256m -Dfile.encoding=utf-8 -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

Linux RPM包服务安装: /etc/sysconfig/jenkins 文件中配置

           JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dfile.encoding=utf--Dsun.jnu.encoding=utf-8"


开源优测

分享软件测试开源技术、经验、方案的首发平台

长按二维码/微信扫描 关注开源优测

苦叶子个人微信:liyimin1912

有问题,可留言或加好友进微信群



Q:在pycharm中经常出现下划线怎么办?

如下图:


A:点击要忽略的错误所在,然后按住ALT+ENTER,在弹出下拉菜单选择ignore errors like this ,就可以快速忽略了,如下图:



Q:出现如下图的错误时怎么处理?

A:检查jar包,将  
selenium-server-standalone-2.41.0.jar(可能jar包版本会出现不一致) 加入到build path中。然后clear up 一下项目即可。


Q:脚本中的元素和组件怎么定义?

A:元素与组件,组件可以包含元素

通常所说的元素,就是指HTML页面,你可以看到的HTML 元素,那么在脚本里面,比如 find_element_by_id("kw1") 就是定位某一个元素,你也可以把它当作组件。

对于组件来说,我们一般会把一些有操作的意义,或者功能,封装在一个方法或者类里面,那么这个方法或者类,就可以看作一个组件。

就像你要定义一个登录组件

 
 
  1. def  login(user,pass){

  2.    find_element_by_id(user)

  3.    find_element_by_id(pass)

  4.    find_element_by_id("submit").click()

  5. }

这整个方法,就可以看着是一个组件。而user,pass ,submit 就是元素


来自为知笔记(Wiz)

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
amazon 3星+ 好评 Key Features Covers basic to advanced concepts of WebDriver Learn how to design a more effective automation framework Explores all of the APIs within WebDriver Acquire an in-depth understanding of each concept through practical code examples Book Description Selenium WebDriver is an open source web UI automation tool implemented through a browser-specific browser driver, which sends commands to a browser and retrieves results. Selenium WebDriver Practical Guide will guide you through the various APIs of WebDriver which should be used in automation tests, followed by a discussion of the various WebDriver implementations available. This guide will support you by offering you access to source code fi les, including the essential HTML fi les, that allow you to work with jQuery and other examples throughout the book. Finally, you will receive an in-depth explanation of how to deal with the latest features of WebDriver through step-by-step practical tutorials. What you will Learn Learn the basic design of Selenium WebDriver and understand how it overcomes the limitations of its predecessor Set up and use Selenium Grid Discover the various mechanisms used to locate web elements Perform advanced actions such as drag-and-drop, double-click, right-click, and action builders on web pages Explore the advanced features of WebDriver such as handling cookies, taking screenshotsmanaging timeouts, and browser navigations Acquire an understanding of the various WebDriver implementations such as Firefox Driver, IE Driver, and Chrome Driver Explore WebDriver EventListeners Design effective automation frameworks using the PageObject pattern Learn how to deal with the latest features of WebDriver About the Author Satya Avasarala has rich experience in Java development and automation testing. He is an engineer in computer science. He has used WebDriver for many years now and has created several good automation frameworks. He has worked at various large software enterprises such as Oracle Corp, Yahoo! Inc., VMware Inc., and the REA Group. Table of Contents Introducing WebDriver and WebElements Exploring Advanced Interactions of WebDriver Exploring the Features of WebDriver Different Available WebDrivers Understanding WebDriver Events Dealing with I/O Exploring RemoteWebDriver and WebDriverBackedSelenium Understanding Selenium Grid Understanding PageObject Pattern Testing iOS and Android Apps

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值