selenium库的基本使用
selenium是一个基于浏览器自动化的模块,使用webdriver可以实现桌面网页测试自动化。
官方文档:https://www.selenium.dev/documentation/
WebDriver:https://www.selenium.dev/zh-cn/documentation/webdriver/browser_manipulation/
安装流程
https://www.selenium.dev/zh-cn/documentation/getting_started/installing_browser_drivers/
- 安装selenium,pip install selenium
- 下载chrome对应版本的浏览器驱动,https://npm.taobao.org/mirrors/chromedriver
- 解压缩后将chromedriver放入python解释器对应文件夹。
使用流程
# 启动Chrome
from selenium.webdriver import Chrome
# 1. 创建浏览器对象
web = Chrome()
# 2. 打开一个网址
web.get("https://www.baidu.com/")

操控浏览器
浏览器导航栏 Browser navigation
1. 打开网址
driver.get("https://selenium/dev")
2. 获取当前URL
driver.current_url
3. 后退按钮
driver.back()
4. 前进按钮
driver.forward()
5. 刷新
driver.refresh()
6. 获取当前页面标题
driver.title
窗口和标签页 Windows and tabs
WebDriver 没有区分窗口和标签页。如果你的站点打开了一个新标签页或窗口,Selenium 将允许您使用窗口句柄来处理它。 每个窗口都有一个唯一的标识符,该标识符在单个会话中保持持久性。你可以使用以下方法获得当前窗口的窗口句柄:
driver.current_window_handle
1.切换窗口或标签
Selenium 4 提供了新的api NewWindow,在创建一个新的窗口或标签页时会自动切换
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
# 启动驱动程序
with webdriver.Chrome() as driver:
    # 打开网址
    driver.get("https://www.baidu.com")
    # 设置等待
    wait = WebDriverWait(driver, 10)
    # 存储原始窗口的 ID
    original_window = driver.current_window_handle
    # 检查一下,我们还没有打开其他的窗口
    assert len(driver.window_handles) == 1
    # 单击在新窗口中打开的链接
    driver.find_element(By.LINK_TEXT, "地图").click()
    # 等待新窗口或标签页
    wait.until(EC.number_of_windows_to_be(2))
    # 循环执行,直到找到一个新的窗口句柄
    for window_handle in driver.window_handles:
        if window_handle != original_window:
            driver.switch_to.window(window_handle)
            break
    # 等待新标签页完成加载内容
    wait.until(EC.title_is("百度地图"))
    
    
2. 创建新的窗口或标签页并切换
# 打开新标签页并切换到新标签页
driver.switch_to.new_window('tab')
# 打开一个新窗口并切换到新窗口
driver.switch_to.new_window('window')
3. 关闭窗口或标签页
#关闭标签页或窗口
driver.close()
#切回到之前的标签页或窗口
driver.switch_to.window(original_window)
4. 退出浏览器
driver.quit()
部分测试框架提供了一些方法和注释,可以在测试结束后放入teardown()方法中。
# ① unittest teardown
# https://docs.python.org/3/library/unittest.html?highlight=teardown#unittest.TestCase.tearDown
def tearDown(self):
    self.driver.quit()
# ② try/finally
try:
    #WebDriver code here...
finally:
    driver.quit()
# ③ with
with webdriver.Firefox() as driver:
  # WebDriver code here...
# WebDriver will automatically quit after indentation
定位元素
https://www.selenium.dev/zh-cn/documentation/webdriver/locating_elements/
find_element_by_
| 定位器 Locator | 描述 | 
|---|---|
| class name | 定位class属性与搜索值匹配的元素(不允许使用复合类名) | 
| css selector | 定位 CSS 选择器匹配的元素 | 
| id | 定位 id 属性与搜索值匹配的元素 | 
| name | 定位 name 属性与搜索值匹配的元素 | 
| link text | 定位link text可视文本与搜索值完全匹配的锚元素 | 
| partial link text | 定位link text可视文本部分与搜索值部分匹配的锚点元素。如果匹配多个元素,则只选择第一个元素。 | 
| tag name | 定位标签名称与搜索值匹配的元素 | 
| xpath | 定位与 XPath 表达式匹配的元素 | 
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号