selenium自动化测试工具加百度小案例

selenium+PhantomJS/Chrome/Firefox

  • selenium
1】定义
      1.1) 开源的Web自动化测试工具
      
  【2】用途
      2.1) 对Web系统进行功能性测试,版本迭代时避免重复劳动
      2.2) 兼容性测试(测试web程序在不同操作系统和不同浏览器中是否运行正常)
      2.3) 对web系统进行大数量测试
      
  【3】特点
      3.1) 可根据指令操控浏览器
      3.2) 只是工具,必须与第三方浏览器结合使用
      
  【4】安装
      4.1) Linux: sudo pip3 install selenium
      4.2) Windows: python -m pip install selenium
  • PhantomJS浏览器
  phantomjs为无界面浏览器(又称无头浏览器),在内存中进行页面加载,高效
  • 环境安装
1】下载驱动
  	2.1) chromedriver : 下载对应版本
           http://npm.taobao.org/mirrors/chromedriver/
  	2.2) geckodriver
           https://github.com/mozilla/geckodriver/releases   
  	2.3) phantomjs
           https://phantomjs.org/download.html
              
  【2】添加到系统环境变量
      2.1) windows: 拷贝到Python安装目录的Scripts目录中
           windows查看python安装目录(cmd命令行):where python
      2.2) Linux :  拷贝到/usr/bin目录中 : sudo cp chromedriver /usr/bin/3】Linux中需要修改权限
      sudo chmod 777 /usr/bin/chromedriver
      
  【4】验证
  	4.1) Ubuntu | Windows
  		from selenium import webdriver
  		webdriver.Chrome()
  		webdriver.Firefox()
  
  	4.2) Mac
  		from selenium import webdriver
  		webdriver.Chrome(executable_path='/Users/xxx/chromedriver')
  		webdriver.Firefox(executable_path='/User/xxx/geckodriver')
  • 示例代码

示例代码一:使用 selenium+浏览器 打开百度

  # 导入seleinum的webdriver接口
  from selenium import webdriver
  import time
  
  # 创建浏览器对象
  driver = webdriver.Chrome()
  driver.get('http://www.baidu.com/')
  # 5秒钟后关闭浏览器
  time.sleep(5)
  driver.quit()

示例代码二:打开百度,搜索赵丽颖,点击搜索,查看

  from selenium import webdriver
  import time
  
  # 1.创建浏览器对象 - 已经打开了浏览器
  driver = webdriver.Chrome()
  # 2.输入: http://www.baidu.com/
  driver.get('http://www.baidu.com/')
  # 3.找到搜索框,向这个节点发送文字: 赵丽颖
  driver.find_element_by_xpath('//*[@id="kw"]').send_keys('赵丽颖')
  # 4.找到 百度一下 按钮,点击一下
  driver.find_element_by_xpath('//*[@id="su"]').click()
  • 浏览器对象(driver)方法
1】driver.get(url=url)   - 地址栏输入url地址并确认
  【2】driver.quit()         - 关闭浏览器
  【3】driver.close()        - 关闭当前页
  【4】driver.page_source    - HTML结构源码
  【5】driver.page_source.find('字符串')
      从html源码中搜索指定字符串,没有找到返回:-1,经常用于判断是否为最后一页
  【6】driver.maximize_window() - 浏览器窗口最大化
  • 定位节点八种方法
1】单元素查找('结果为1个节点对象')
      1.1) 【最常用】driver.find_element_by_id('id属性值')
      1.2) 【最常用】driver.find_element_by_name('name属性值')
      1.3) 【最常用】driver.find_element_by_class_name('class属性值')
      1.4) 【最万能】driver.find_element_by_xpath('xpath表达式')
      1.5) 【匹配a节点时常用】driver.find_element_by_link_text('链接文本')
      1.6) 【匹配a节点时常用】driver.find_element_by_partical_link_text('部分链接文本')
      1.7) 【最没用】driver.find_element_by_tag_name('标记名称')
      1.8) 【较常用】driver.find_element_by_css_selector('css表达式')2】多元素查找('结果为[节点对象列表]')
      2.1) driver.find_elements_by_id('id属性值')
      2.2) driver.find_elements_by_name('name属性值')
      2.3) driver.find_elements_by_class_name('class属性值')
      2.4) driver.find_elements_by_xpath('xpath表达式')
      2.5) driver.find_elements_by_link_text('链接文本')
      2.6) driver.find_elements_by_partical_link_text('部分链接文本')
      2.7) driver.find_elements_by_tag_name('标记名称')
      2.8) driver.find_elements_by_css_selector('css表达式')3】注意
      当属性值中存在 空格 时,我们要使用 . 去代替空格
      页面中class属性值为: btn btn-account
      driver.find_element_by_class_name('btn.btn-account').click()
  • 节点对象操作
1】node.send_keys('')  - 向文本框发送内容
  【2】node.click()      - 点击
  【3】node.get_attribute('属性名')  -  获取节点的属性值

chromedriver设置无界面模式

from selenium import webdriver

options = webdriver.ChromeOptions()
# 添加无界面参数
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

selenium - 鼠标操作

打开百度的高级搜索代码:

from selenium import webdriver
# 导入鼠标事件类
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')

# 移动到 设置,perform()是真正执行操作,必须有
element = driver.find_element_by_xpath('//*[@id="u1"]/a[8]')
ActionChains(driver).move_to_element(element).perform()

# 单击,弹出的Ajax元素,根据链接节点的文本内容查找
driver.find_element_by_link_text('高级搜索').click()

你可能感兴趣的:(自动化测试,python)