最近工作比较闲,平时工作中也并没有使用到 web 的 UI 自动化测试。正在学 python,所以找点新东西来学习,在此记录一下,知识是很基础的。
先看例子吧(网上找的):
import time
from selenium import webdriver
def login(name, passwd):
url = 'https://pan.baidu.com/'
# 这里可以用Chrome、Phantomjs等,如果没有加入环境变量,需要指定具体的位置
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
print('开始登录')
driver.implicitly_wait(10)
chg_field = driver.find_element_by_class_name('login-main').find_element_by_id('TANGRAM__PSP_4__footerULoginBtn')
chg_field.click()
name_field = driver.find_element_by_id('TANGRAM__PSP_4__userName')
name_field.send_keys(name)
passwd_field = driver.find_element_by_id('TANGRAM__PSP_4__password')
passwd_field.send_keys(passwd)
login_button = driver.find_element_by_id('TANGRAM__PSP_4__submit')
login_button.click()
time.sleep(20)
return driver.get_cookies()
if __name__ == '__main__':
login_name = input('请输入你的登录账号:\n')
login_passwd = input('请输入你的登录密码:\n')
cookies = login(login_name, login_passwd)
这段代码是在 python3.5 上运行的,会自动打开百度登录页面,再填入账号进行登录。
1)首先安装 selenium,命令是:pip install selenium,安装时遇到了一点问题,就是 pip 的版本太低,导致不能正确安装 selenium,可以使用 pip show pip 命令来查看当前 pip 版本,使用 python -m pip install --upgrade pip 命令来升级。升级 pip 之后可以正确安装 selenium 了。
2)测试过程中会自动调起浏览器,所以需要下载浏览器驱动,这里使用的是 chrome,所以需要下载 chromedriver,目前可用的下载地址是:http://npm.taobao.org/mirrors/chromedriver/。如果要使用 firefox,需要下载 firefoxdriver。
下载时要先查看你的浏览器版本,不同版本的浏览器需要下载对应的驱动版本,版本的对应问题可以去 chromedriver 官网上查看。我的 chrome 是 V72,所以我下载的驱动版本是 74.0 win32 位的。如果使用的是 linux 系统,需要下载对应的 linux 版本。
3)下载的驱动是一个 ZIP 包,解压之后是 chromedriver.exe 文件。我是在 python 的安装主目录,也就是跟 python.exe 同一级的目录下新建了一个 chromedriver 文件夹,再把.exe 文件放到该目录下。如果是 linux 系统,将.exe 放到 /usr/bin 目录下即可。
4)配置操作系统环境变量,把驱动的所在目录添加到 path 变量的最后,我的所在目录是 C:\Python27\chromedriver\chromedriver\。这里需要注意的是必须把驱动的文件名加到地址上,如果使用的是 C:\Python27\chromedriver\,在测试过程中会报错的。
如果没有配置环境变量,也可以在代码中指定位置。上述代码中的第 7 行可以改为:driver = webdriver.Chrome(executable_path='C:/Python27/chromedriver/chromedriver')
浏览器调起成功后,会有下图红色框中的提示。
5)编码过程中需要获取元素 name 和 id:在浏览器上按 F12,点击元素,可以查看到相应的 name 和 id。