用于web测试的工具

支持无界面浏览器操作

一、安装

  1. 操作谷歌浏览器驱动下载地址
  2. 谷歌驱动和谷歌浏览器版本之间的映射表
  3. 查看谷歌浏览器版本
    1. 谷歌浏览器右上角->帮助->关于
  4. pip install selenium

二、使用

  1. 导入: from selenum import webdriver
  2. 创建谷歌浏览器操作对象:
    • path = 谷歌浏览器驱动文件路径
    • browser = webdriver.Chrome(path)
  3. 访问网址
    • url = 要访问的网址
    • browser.get(url)

使用案例

# _*_ coding : utf-8 _*_
# @Time : 2023/7/2 17:45
# @Author : bamboo
# @File : selenium_first_use
# @Project : py-pro
import time

from selenium import webdriver

# 创建浏览器操作对象
path = './chromedriver.exe'
browser = webdriver.Chrome(path)

# 访问网址
url = 'https://www.yycdh.com/'

browser.get(url)

# 让页面停留十秒
time.sleep(10)

# page_source 获取网页源码
content = browser.page_source
print(content)

三、获取标签元素

使用方式

  • from selenium.webdriver.common.by import By
  • button = browser.find_element(By.ID, ‘su’)

获取方式:(模拟获取button)

  1. id获取

    button = browser.find_element(By.ID, 'su')
  2. 标签属性的name属性值获取

    button = browser.find_element(By.NAME, 'referrer')
  3. xpath获取

    button = browser.find_element(By.XPATH, '//input[@id="su"]')
  4. bs4获取(select语法)

    button = browser.find_element(By.CSS_SELECTOR, '#su')
  5. 链接文本获取(超链接中的文本)

    # <a>视频</a>
    button = browser.find_element(By.LINK_TEXT, '视频')

案例

# _*_ coding : utf-8 _*_
# @Time : 2023/7/2 22:30
# @Author : bamboo
# @File : selenium_for_use_baidu
# @Project : py-pro

from selenium import webdriver
from selenium.webdriver.common.by import By

path = './chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'

browser.get(url)

# 获取按钮
# id获取
button = browser.find_element(By.ID, 'su')
print(button)
# 标签属性的属性值获取 name属性值
button = browser.find_element(By.NAME, 'referrer')
print(button)
# xpath获取
button = browser.find_element(By.XPATH, '//input[@id="su"]')
print(button)
# bs4的select语法
button = browser.find_element(By.CSS_SELECTOR, '#su')
print(button)
# 通过链接文本获取
button = browser.find_element(By.LINK_TEXT, '视频')
print(button)

四、访问元素信息

  1. 获取元素属性

    button.get_attribute('class')
  2. 获取元素文本

    button.text
  3. 获取标签名

    button.tag_name

五、元素交互

  1. 点击:click()

  2. 输入:send_keys()

  3. 后退操作:browser.back()

  4. 前进操作:browser.forword()

  5. 模拟JS滚动:

    js = 'document.documentElement.scrollTop=100000'
    browser.execute_script(js) # 执行js代码
  6. 获取网页代码:page_source

  7. 退出:browser.quit()

  8. 保存屏幕快照:browser.save_screenshot(‘baidu.png’)

案例

# _*_ coding : utf-8 _*_
# @Time : 2023/7/2 23:17
# @Author : bamboo
# @File : selenium_interaction_baidu
# @Project : py-pro

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

path = './chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

# 睡两秒
time.sleep(2)

# 获取输入文本框
input = browser.find_element(By.ID, 'kw')

# 文本框中输入内容
input.send_keys('周杰伦')
time.sleep(2)

submit = browser.find_element(By.ID, 'su')
submit.click()

time.sleep(2)

# 滑到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(2)

# 下一页按钮
next = browser.find_element(By.XPATH, '//a[@class="n"]')
next.click()

time.sleep(2)

# 返回上一页
browser.back()
time.sleep(2)

# 回归
browser.forward()
time.sleep(2)

# 退出
browser.quit()

六、Phantomjs

直接使用Chrome handless就好,这个已经停止更新了

无界面的浏览器

支持页面元素查找,js执行等

不进行css和gui渲染,运行效率更高

6.1 使用

与selenium使用方式一致,只有引入的驱动不一样

  1. 获取PhantomJs.exe文件路径path
  2. browser = webdriver.PhantomJS(path)
  3. browser.get(url)
  4. 扩展:保存屏幕快照:browser.save_screenshot(‘baidu.png’)

七、Chrome handless

无界面浏览器

使用

  1. 导包

    from selenium import  webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.options import Options
  2. 设置chrome_options

    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
  3. 设置chrome路径

    # r表示这是一个原始字符串,不需要对\进行转义
    path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path
  4. 获取浏览器对象

    browser = webdriver.Chrome(chrome_options=chrome_options)
  5. 整体代码,可写入方法进行封装

    # 封装
    def share_chrome():
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.options import Options

    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')

    # r表示这是一个原始字符串,不需要对\进行转义
    path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path

    browser = webdriver.Chrome(chrome_options=chrome_options)
    return browser
    # 使用
    browser = share_chrome()
    url = 'https://www.baidu.com'
    browser.get(url)