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()
网友评论