最近工作比较闲,平时工作中也并没有使用到 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。


↙↙↙阅读原文可查看相关链接,并与作者交流