Selenium 与页面的交互—Python自动化测试实战(4)

发表于:2019-6-17 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:无涯    来源:51Testing软件测试网原创

  第 3 章  Selenium 与页面的交互
  3.1  WebDriver 浏览器的属性
  WebDriver 提供了很多属性来支持对浏览器的操作,例如,获取测试地址、多窗口的处理、获取浏览器名称等,具体介绍如下。
  1.获取测试的地址
  获取测试的地址用到的方法是 current_url,也就是获取当前测试的具体 URL。
  以百度首页为例,获取的地址就是百度首页的地址,实现的测试代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://www.baidu.com') driver.implicitly_wait(30) print('测试地址为:{0}'.format(driver.current_url)) driver.quit()
  运行以上代码后获取的就是百度首页的地址。
  2.获取当前页面代码
  获取当前测试页面的代码用到的方法是 page_source。以百度首页为例,要想获取百度首页的页面代码,实现的代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://www.baidu.com') driver.implicitly_wait(30) print('页面代码如下:{0}'.format(driver.page_source)) driver.quit()
  3.获取当前的 Title
  获取当前的 Title,即获取当前测试页面的标题。例如,百度首页的 Title 是"百度一下,你就知道"。获取 Title 的测试代码为:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://www.baidu.com') driver.implicitly_wait(30) print('百度首页的Title为:{0}'.format(driver.title)) driver.quit()
  4.页面的前进和后退
  前进用到的方法是 forward,后退用到的方法是 back。以百度首页和 Bing 搜索首页为例,要实现先打开百度首页,再打开 Bing 搜索页,再后退到百度首页,然后再从百度首页返回到 Bing 搜索页。实现的测试代码为:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver import  time as t
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://www.baidu.com') t.sleep(2) driver.get('http://www.bing.com') t.sleep(2)
#返回到百度
driver.back() print('当前URL为:{0}'.format(driver.current_url)) t.sleep(2) #前进到bing
driver.forward() print('当前URL为:{0}'.format(driver.current_url)) driver.quit()
  5.关闭程序
  在 Selenium 中,quit 方法用来退出驱动程序(Driver)并关闭执行的浏览器;而 close 方法用来关闭执行的浏览器,所以关闭程序建议使用 quit 方法。
  6.加载测试地址
  在 UI 自动化测试中,打开测试地址用到的方法是 get 方法,它的参数是要打开的测试页面的地址。例如,要测试打开新浪邮箱的地址(https://
  mail.sina.com.cn/),测试代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://mail.sina.com.cn/') driver.quit()
  7.多窗口实战
  在新浪邮箱的登录页面(简称新浪登录页面,或登录页面)点击"注册"按钮,如何在打开的注册页面输入框中输入注册信息呢?这里会用到窗口处理的方法。current_window_ handle 用来获取当前浏览器的窗口句柄,window_handles 用来获取浏览器的所有窗口句柄。要实现在新浪登录页面点击注册,在注册页面邮箱地址输入框中输入邮箱地址,再次跳转到登录页面,代码如下: 
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver import  time as t
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://mail.sina.com.cn/') driver.implicitly_wait(30)
#获取当前窗口句柄
now_handle=driver.current_window_handle t.sleep(2)
#点击注册链接
driver.find_element_by_link_text('注册').click() t.sleep(2)
#获取所有窗口句柄
handles=driver.window_handles
#对所有窗口句柄循环处理
for handle in handles:
#判断handle不是当前窗口句柄    if handle!=now_handle:
driver.switch_to_window(handle)       t.sleep(2)       driver.find_element_by_name('email').send_keys('wuya')       t.sleep(2)       # 关闭注册页面
driver.close()
#切换到登录页面
driver.switch_to_window(now_handle) t.sleep(3)
#在账号输入框中输入邮箱
driver.find_element_by_id('freename').send_keys('wuya') t.sleep(4) driver.quit()
  8.浏览器最大化
  使浏览器 大化的方法是 maximize_window。一般打开浏览器时,界面并不是 大化的,这对 UI 自动化测试的影响比较大,所以建议在打开浏览器后,调用该方法让浏览器 大化,实现的测试代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox()
#浏览器 大化
driver.maximize_window() driver.get('http://www.baidu.com') driver.quit()
  9.刷新
  刷新用到的方法是 refresh 方法。在 UI 自动化测试中,某些场景需要用到页面的刷新。例如,打开百度首页后,输入搜索关键字,然后刷新页面查看效果,实现的代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver import  time as t
driver=webdriver.Firefox() driver.maximize_window() driver.get('http://www.baidu.com') driver.find_element_by_id('kw').send_keys('Selenium') t.sleep(2)
#对页面进行刷新
driver.refresh() t.sleep(3) driver.quit()
  10.获取执行的浏览器
  获取执行的浏览器名称用到的是 name 方法,实现的代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver import  time as t
driver=webdriver.Firefox() driver.maximize_window()
driver.get('http://www.baidu.com')
#测试使用的浏览器
print('测试执行的浏览器为:{0}'.format(driver.name)) driver.quit()
版权声明:51Testing软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号