第5章Selenium 3(WebDriver)的安装 本章主要讲解WebDriver的安装与配置方法,请读者按照本章节的内容安装和配置好WebDriver的运行环境,以便在后续章节中,讲解基于WebDriver实例时,能及时执行及查看结果。 本书以笔者撰稿时最新的Selenium(3.0.2)版本为例,介绍其安装及使用方法。 5.1在Python中安装WebDriver (1) 安装好Python、pip工具后,尝试直接在CMD下输入pip install selenium,如图51所示,如果成功直接跳转到第(5)步开始执行,笔者选择的是selenium==3.14.0版本。 图51 (2) 下载Selenium离线安装包,访问网址: https://pypi.python.org/pypi/selenium,选择扩展名为gz的源码包进行下载,如图52所示。 图52 (3) 下载完以后会得到一个selenium3.14.0.tar.gz离线安装文件,解压该文件到任意目录。CMD下通过cd命令将当前的工作目录切换到setup.py文件所在的目录,如图53所示。 图53 (4) 然后在CMD下执行python setup.py install命令进行安装,安装成功后的界面如图54所示。 图54 (5) 安装成功后,CMD下输入python回车,进入Python交互模式,执行import selenium命令,如果没有报错,说明Selenium已经安装成功,如图55所示。 图55 5.2第一个WebDriver脚本 测试目标: 使用Firefox浏览器验证WebDriver是否可用。 测试用例步骤: (1) 在Firefox浏览器中打开搜狗浏览器首页。 (2) 在搜索输入框中输入“光荣之路自动化测试”。 (3) 单击“搜索”按钮。 (4) 页面显示搜索结果。 环境准备: (1) 使用Firefox浏览器执行Selenium 3编写的自动化测试脚本时,需要从https://github.com/mozilla/geckodriver/releases网址根据读者操作系统类型及浏览器位数(64位驱动兼容32位Firefox浏览器)下载对应的WebDriver操作Firefox浏览器的驱动程序,如图56所示。 图56 (2) 下载并解压得到geckodriver.exe文件,将该文件保存到本地硬盘任意位置,比如D:\下。 测试脚本程序: from selenium import webdriver import time # 通过executable_path参数指明Firefox驱动文件所在路径 driver = webdriver.Firefox(executable_path = "c:\\geckodriver") # driver = webdriver.Chrome(executable_path="c:\\chromedriver") # 打开搜狗首页 driver.get("http://www.sogou.com") # 清空搜索输入框默认内容 driver.find_element_by_id("query").clear() # 在搜索输入框中输入"光荣之路自动化测试" driver.find_element_by_id("query").send_keys("光荣之路自动化测试") # 单击"搜索"按钮 driver.find_element_by_id("stb").click() # 等待3秒 time.sleep(3) # 退出浏览器 driver.quit() PyCharm中执行该脚本,会看到程序自动启动浏览器,访问搜狗首页,并在搜索输入框中输入搜索关键内容“光荣之路自动化测试”,单击搜索按钮后展示搜索结果,3秒后自动退出浏览器。 更多说明: 从Selenium 3版本开始,webdriver/firefox/webdriver.py程序文件中的__init__.py文件中,设置executable_path="geckodriver", 而Selenium 2是executable_path="wires",所以使用Selenium 3编写的自动化测试脚本,使用Firefox 浏览器测试时需要指明Firefox浏览器驱动程序geckodriver.exe文件所在路径。 问题及建议: 建议Firefox浏览器在安装时使用默认安装路径。如果使用了自定义安装路径,可能无法找到Firefox.exe文件来启动执行此测试脚本的Firefox浏览器。 报错1: Exception in thread "main"org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. 解决办法: 在driver = webdriver.Firefox(executable_path = "c:\geckodriver")这行代码前一行增加如下代码: os.environ["webdriver.firefox.driver"] = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 其中“C:\ProgramFiles (x86)\Mozilla Firefox\firefox.exe”代表firefox.exe文件所在的路径,读者须根据自己机器上firefox.exe文件所在的路径进行修改。 报错2: WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line 解决方法: 脚本顶部导入FirefoxBinary模块: from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 修改启动浏览器的代码如下: binary = FirefoxBinary('D:\\FirefoxPortable\\Firefox.exe') driver = webdriver.Firefox(firefox_binary = binary, executable_path = r"c:\geckodriver") 5.3各浏览器驱动的使用方法 Selenium 3版本开始不再提供默认浏览器支持,所有浏览器都是通过各个浏览器官方提供相应的浏览器驱动进行支持,这使得运行在各种浏览器上的自动化测试更稳定。 除了本章5.2小节中直接通过executable_path参数指明支持对应浏览器的驱动程序文件方法外,读者还可以创建一个目录(比如D:\driver\目录),把不同浏览器的驱动文件均放到该目录中(比如: geckodriver.exe、chromedriver.exe、MicrosoftWebDriver.exe、IEDriverServer.exe、operadriver.exe等),然后将该目录(比如D:\driver\目录)添加到系统环境变量path中,WebDriver在启动浏览器时,会自动到环境变量中设定的路径中寻找相应的驱动文件。 在本书中,笔者将采用5.2小节实例程序中介绍的添加浏览器驱动的方式,仅是为了更灵活。