美文网首页UI 自动化
Selenium 3 + Python 3 Demo

Selenium 3 + Python 3 Demo

作者: DC_ing | 来源:发表于2018-04-20 23:09 被阅读0次

Selenium 3 + Python 3 Demo

新公司要求使用 python,并且有计划往 Web 自动化方向走,所以最近在学习 Python 和 Selenium。本篇文章先跟大家来个简单的demo,其他 Selenium 的坑,留待以后的新增加的文章。

环境搭建这一步就跳过了,百度一大把这样的教程。这篇文章主要是对每个主流的浏览器进行 Selenium 的 Demo 例子运行。
PS:由于目前使用 macOS 系统,Windows 的 IE 和 EDGE 浏览器先放一放,等我用 windows 机器试验后,再补充。

Chrome

我们最常用的浏览器,这也是最简单的例子。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import webdriver

driver = webdriver.Chrome(executable_path = 'path/to/chromedriver')
# 也可以写成这样(不要 [executable_path=])
# driver = webdriver.Chrome('path/to/chromedriver')

driver.get('https://www.baidu.com')
assert '百度一下' in driver.title;
driver.quit()

FireFox

这也是比较多人使用的浏览器,也是对自动化支持很好的

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import webdriver

# Firefox函数的参数一定要加[],不然会报“NotADirectoryError: [Errno 20] Not a directory:”错误
driver = webdriver.Firefox(executable_path = 'path/to/geckodriver')
# firefox 的驱动程序名字是 geckodriver

driver.get('https://www.baidu.com')
assert '百度一下' in driver.title;
driver.quit()

Opera

这个比较小众的浏览器,不过还是有 driver 驱动自动化的,与 Firefox 一致的

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import webdriver

# Opera函数的参数一定要加[],不然会报“NotADirectoryError: [Errno 20] Not a directory:”错误
driver = webdriver.Opera(executable_path = 'path/to/operadriver')
# Opera 的驱动程序名字是 operadriver

driver.get('https://www.baidu.com')
assert '百度一下' in driver.title;
driver.quit()

Safari

这个是 Mac 的浏览器,也有一定的用户人群,做浏览器兼容测试,也是需要这个浏览器。在macOS 10.13使用 Selenium 3.11.0打开 Safari 浏览器比较麻烦。如果简单使用webdriver.Safari(),会报错

AttributeError: 'WebDriver' object has no attribute 'service'

网上的方法都试过了,没办法解决这个问题。后台我自己根据错误提示的service提示,下载了 selenium-server-standalone,并开启服务,再运行也是报错。最后还是网上找到一些借鉴的方法,不直接使用Safari(),直接使用Remote()方法,加上desired_capabilities=DesiredCapabilities.SAFARI参数,才能使 Safari 正常启动运行测试。

最新消息,这个官方一个 bug 引起的问题,等待下一个 release 版本修复吧

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

driver = webdriver.Remote(desired_capabilities=DesiredCapabilities.SAFARI)
# 还要开启selenium-server 才能正常启动 Safari 浏览器

driver.get('https://www.baidu.com')
assert '百度一下' in driver.title
time.sleep(3)
driver.quit()

下面附上selenium-server-standalone安装及使用方法

brew install selenium-server-standalone     # 安装命令
selenium-server -port 4444          # 启动 selenium 服务命令,并指定4444端口

以上是手动开启 selenium 服务启动 Safari。以下方法适用于3.11.0以后的版本(不包含3.11.0)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
from selenium import webdriver

driver = webdriver.Safari()
driver.get('https://www.baidu.com')
assert '百度一下' in driver.title
time.sleep(3)
driver.quit()

相关文章

网友评论

    本文标题:Selenium 3 + Python 3 Demo

    本文链接:https://www.haomeiwen.com/subject/irhtlftx.html