1.5节介绍了Selenium的安装流程,本节开始学习使用Python来开发Selenium脚本调用不同的浏览器,确保搭建的自动化环境能联调成功,为后面正式的脚本学习做好准备。
为了后面代码开发和执行的规范和一致性,这里介绍如何在PyCharm中创建和执行Python文件,后面内容如没有特殊说明则以此流程为标准。具体流程如下。
步骤1 打开PyCharm程序。
步骤2 单击Create New Project。
步骤3 选择一个项目路径,单击Create。
步骤4 右击项目→New→Python File→输入文件名如“ff”→单击OK。
步骤5 在新建的文件内输入具体的测试代码。
步骤6 在文件内区域右击,选择Run “ff”执行Python文件。
步骤7 查看运行结果是否与脚本场景所一致,如果一致则表示demo脚本运行成功。
在调用Firefox浏览器时,关键在于启动Firefox的WebDriver示例,关键代码如下。
driver = webdriver.Firefox()
而除了能正常启动Firefox浏览器之外,还需要测试下能否正常驱动浏览器的行为。为此,通过一小段测试代码来测试浏览器的调用行为。具体内容如下。
# -*- coding:utf-8 -*- from selenium import webdriver u'''打开百度首页,输入Selenium进行搜索''' driver = webdriver.Firefox() driver.get("http://www.baidu.com") assert(u"百度" in driver.title) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() assert(u"selenium_百度搜索" in driver.title) driver.close() driver.quit()
这段代码所要执行的测试场景依次如下。
(1)启动Firefox的WebDriver实例。
(2)浏览http://www.baidu.com网址。
(3)检查浏览器标题中是否包含“百度”字样。
(4)查找搜索输入框(id=kw的元素)并输入“selenium”字符串。
(5)查找搜索按钮(id=su的元素)并执行“单击”操作。
(6)检查浏览器标题中是否包含“selenium_百度搜索”字样。
(7)关闭浏览器窗口。
(8)关闭WebDriver实例。
同样的测试场景再来测试下Chrome的调用行为。这里需要把原本启动Firefox的代码替换为启动Chrome的代码。替换的内容如下。
driver = webdriver.Chrome()
另外新建一个chrome.py的文件,并输入完成的测试场景代码,具体如下。
# -*- coding:utf-8 -*- from selenium import webdriver u'''打开百度首页,输入Selenium进行搜索''' driver = webdriver.Chrome() ##修改的内容 driver.get("http://www.baidu.com") assert(u"百度" in driver.title) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() assert(u"selenium_百度搜索" in driver.title) driver.close() driver.quit()
完成代码输入之后,在文件空白处右击并选择Run “chrome”执行Python文件。观察实际的运行结果与脚本场景是否一致。
最后试一下IE浏览器的调用行为。同样需要把启动浏览器的代码替换掉。这里需要替换为启动IE浏览器的代码。关键代码为:
driver = webdriver.Ie()
另外新建一个ie.py文件并输入完整的测试场景代码,全部代码如下所示。
# -*- coding:utf-8 -*- from selenium import webdriver u'''打开百度首页,输入Selenium进行搜索''' driver = webdriver.Ie() driver.get("http://www.baidu.com") assert(u"百度" in driver.title) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() assert(u"selenium_百度搜索" in driver.title) driver.close() driver.quit()
完成文件内容输入之后,在文件空白处右击并选择Run “ie”执行该Python文件。同样需要检查浏览器的行为与测试场景是否一致。
需要注意的是由于IE的安全机制策略,可能会导致启动浏览器异常。这里需要对IE浏览器进行预设置,即关闭IE的“启用保护模式”。
具体设置方法为:打开IE浏览器→选择“设置”菜单→打开“Internet选项”对话框→切换到“安全”选项卡→依次单击Internet、“本地Intranet”“受信任的站点”“受限制的站点”→取消所有“启用保护模式”的选中状态→保存设置,如图1-26所示。
如果被测试页面中包含frame,并且子frame与父frame不是同源的情况下,使用Selenium操作子frame的时候,则需要进行“受信站点”设置。具体设置步骤如下。
(1)打开IE浏览器的“Internet选项”对话框并切换到“安全”选项卡。
(2)单击“受信任的站点”图标,如图1-27所示。
(3)单击“站点”按钮,并在弹出框中输入子frame的url域名,如图1-28所示。
(4)单击“添加”按钮并保存设置。
通常经过上述两项设置之后,IE浏览器都可以正常地被Selenium调用。如果设置之后启动IE浏览器仍有问题,则可能是WebDriver版本与当前IE浏览器的版本不一致。另外,在学习过程中如果有遇到其他问题,还可以到http://www.testqa.cn上的Selenium小组中进行提问。
图1-26 IE取消启用保护模式设置
图1-27 IE信任站点设置
图1-28 IE信任站点添加