要做web自动化,首先要搭建自动化测试环境,所以必然会用到selenium。
在构建环境和使用环境的过程中,经常会遇到以下问题:
1.无法导入selenium包:
这种错误一般分为两种情况:
1.根本没有安装硒库;
2.安装了selenium库,但是导入时仍然提示selenium库不存在。
解决方法:
对于第一种,就是安装硒库。Pip命令安装最好!!命令:pip安装selenium
2:
1)确认你的selenium第三方库安装在哪个python目录下?并确认您的selenium安装成功;
如何确认?安装的时候会直接输出你的selenium安装在哪里。看好了。
2)确认你的代码用的是哪种python,安装目录在哪里?是否是1)中的python目录。
以pycharm编辑器为例:
在pycharm中,每个项目都有一个外部库列。如下图:
它会直接显示你当前项目使用的python版本和安装目录;
打开其下的site-packages目录,将显示所有已安装的第三方库。如果能找到selenium文件夹,据说这个python版本安装了selenium。
注意:pycharm现在有专业版和社区版。很多新手朋友去用专业版的破解版,不知道什么时候入的坑。
因为默认使用专业版–是为了你创造的虚拟环境。您需要手动将其配置为使用系统python环境。所以强烈建议新手使用社区版。
如果以上两点得到证实,没错,它们安装在我目前使用的python中。恭喜你,可以正常导入selenium的webdriver包了。
2、调用selenium库方法失败:Module object is not callable
2.无法调用selenium库方法:模块对象不可调用
这个问题就好解决了。。。
就是在使用webdriver的函数时,函数名是错误的。如果弄错了,webdriver库根本找不到这个名字对应的函数。自然就报了上面的错误。
所以,正确的做法是:
浏览器= webdriver。铬合金()
3.浏览器版本与驱动程序版本不匹配时的错误报告:调用函数结果丢失'价值'
这个问题就要从硒环境的安装说起了。
当我们测试web系统时,我们手动点击浏览器页面。但是自动化,我们要改变实现的方式。
就是通过代码自动去浏览器页面中的各个点。也就是python+selenium代码与浏览器交互。
而且浏览器类型很多,比如Google,ie,firefox,safaria & # 8230…
两个完全不同的物种是如何交流的??
翻译!!中间件!!对,就是这样。。。为了解决这个问题,浏览器厂商提供了各种驱动软件。于是就有了Chrome DRVER,即驱动,壁虎驱动……
驱动软件可以和我们的python+selenium自动化代码交互,也可以和浏览器交互。自动化代码需要做的事情,是通过驱动软件驱动浏览器运行来实现的。
然而,从诞生之初,软件就需要不断成长和进化,以更好地为人们服务。
所以浏览器会不断更新,匹配的驱动软件也会不断更新。
所以会有:支持不同浏览器版本的不同驱动版本。
因此,解决这个错误的方法是下载与您当前浏览器版本相匹配的驱动程序。
将它放在您的python版本的安装目录下。
Python selenium webdriver常见问题解答如何使用ChromeDriver?
从这里下载最新的驱动程序版本并解压。
#嗯,这个命令是针对linux或者osx用户的。# windows用户直接点击by乙醇unzip chrome driver _ Linux 32 _ x . x . x . x . zip你会得到一个chrome驱动的可执行文件。现在只需使用以下代码:
driver = webdriver。chrome(executable _ path = "/path/to/chrome driver ")#如果Windows还不行,就把chrome驱动扔进python的安装目录。乙醇硒2支持XPath 2.0吗?
Selenium将xpath处理委托给浏览器的xpath解析引擎。所以浏览器支持什么,selenium就支持什么。如果那些精彩的浏览器没有xpath引擎(IE6,7,8),那么selenium在这些老爷爷身上只支持xpath1.0。
我怎样才能滚动到页面的底部?
您可以使用execute_script方法来处理这个问题。调用原生javascript的API,想滚哪儿滚哪儿。
下面的代码演示如何滚动到页面底部:
driver . execute _ script("window.scrollTo(0,document . body . scroll height);")滚动到窗口http://***.w3schools.com/jsref/obj_window.asp对象的http://***.w3schools.com/jsref/met_win_scrollto.asp。该方法可以滚动到页面上的任何位置。scroll height http://***.w3schools.com/jsref/dom_obj_all.asp是dom元素的一个常见属性。Document.body.scrollHeight会返回body元素的高度,基本上就是页面的高度。
如何使用Firefox profile自动保存下载的文件
首先,你想保存什么样的文件?要找出要自动下载的文件类型,只需使用curl。
curl-I URL | grep "内容类型"另一种方法是使用请求<>
导入请求sprint requests . head('http://*** . python . org ').标题['内容类型']当你确定了内容类型后,只需调用browser . helper apps . never ask . savetodisk来设置firefox的配置文件。
这是一个例子:
从selenium导入OS导入webdriverfp = webdriver。Firefox profile()FP . set _ preference("browser . download . folder list ",2)FP . set _ preference("browser . download . ***nager . show when starting ",False)FP . set _ preference("browser . download . dir ",OS . getcwd())FP . set _ preference("browser . helper apps . never ask . savetodisk ", "应用程序/八位字节流")浏览器= webdriver。Firefox(Firefox _ profile = FP)browser . get("http://pypi.python.org/pypi/selenium")browser . find _ element _ by _ partial _ link _ text("硒-2 ").单击()在上面的示例中,应用程序/八位字节流是内容类型。
Browser.download.dir指定自动保存文件的文件夹。
如何同时打开firebug和Firefox?
首先下载Firebug XPI文件(这是friefox & # 8211的扩展文件;通过乙醇),然后调用firefox profile的add_extension方法。
从selenium导入webdriverfp = webdriver。Firefox profile()FP . add _ extension(extension = 'firebug-1 . 8 . 4 . xpi ')FP . set _ preference("extensions . firebug . current version ", "1.8.4")# avoid startup screen browser = web driver . Firefox(Firefox _ profile = FP)如何截图?
使用webdriver提供的save_screenshot方法:
从selenium导入webdriverdriver = webdriver。Firefox()driver . get('http://***.python.org/')driver . save _截图('截图. & # 039)driver.quit()如何用默认的现有配置文件启动firefox?通过乙醇
使用现有配置文件启动firefox可以自动登录到已经登录的站点。代码如下:
fp = webdriver。Firefox profile('/path/to/your/existing/profile ')浏览器= webdriver。Firefox(FP)windows上这里有个漏洞,就是windows上的路径分隔符是yes而不是/了。只要弄清楚这一点,并指定基本路径。
PS:这里还有一个坑。也就是说,如果使用默认的profile,请在运行代码之前关闭friefox,否则会因为profile的文件锁问题而出现异常。也就是说,如果使用默认配置文件,一次只能打开一个firefox实例。
希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以私聊我或关注公众号“特斯汀软件测试”。免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。
本文来自一纸枕书投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/609343.html