本文共 2218 字,大约阅读时间需要 7 分钟。
WebDriver运行原理
Selenium WebDriver 是一个开源工具,用于自动化测试。它通过与浏览器的驱动程序通信,执行复杂的自动化操作。了解其运行原理有助于更好地开发和优化自动化测试脚本。
Selenium WebDriver 的核心工作原理是通过 HTTP 协议与浏览器通信。具体流程如下:
Selenium WebDriver 与浏览器的通信基于 JSON Wire 协议。所有通信数据以 JSON 格式传递,确保高效且可靠。
元素定位的8种方法
在 Selenium WebDriver 中,元素定位是核心操作之一。以下是8种常用定位方法:
示例代码如下:
from selenium import webdriverfrom selenium.webdriver.common.by import Byclass TestCase(object): def __init__(self): self.driver = webdriver.Chrome() self.driver.get("http://www.baidu.com") self.driver.maximize_window() time.sleep(1) def execute_click_su(self): self.driver.find_element_by_id('su').click() time.sleep(3) def quit_driver(self): self.driver.quit() 封装写法:
from selenium import webdriverfrom selenium.webdriver.common.by import Bydef get_element(driver, *loc): element = driver.find_element(*loc) return elementif __name__ == '__main__': driver = webdriver.Chrome() driver.get("http://www.baidu.com") loc1 = (By.ID, 'kw') get_element(driver, *loc1).send_keys("github") get_element(driver, By.ID, 'su').click() time.sleep(3) driver.quit() Selenium WebDriver属性
| 属性 | 属性描述 |
|---|---|
| driver.name | 浏览器名称 |
| driver.current_url | 当前 URL |
| driver.title | 当前页面标题 |
| driver.page_source | 当前页面源码 |
| driver.current_window_handle | 当前窗口句柄 |
| driver.window_handles | 所有窗口句柄 |
| driver.name | 浏览器名称 |
Selenium WebElement
WebElement 是 WebDriver 定位到的元素对象。它包含以下属性:
| 属性 | 属性描述 |
|---|---|
| id | 元素标识 |
| size | 元素尺寸 |
| rect | 元素位置和尺寸 |
| tag_name | 元素标签 |
| text | 元素文本 |
| value_of_css_property | 元素的 CSS 属性值 |
常用方法
| 方法 | 方法描述 |
|---|---|
| send_keys() | 输入内容 |
| clear() | 清空内容 |
| click() | 单击元素 |
| get_attribute() | 获取属性值 |
| is_selected() | 是否被选中 |
| is_enabled() | 是否可用 |
| is_displayed() | 是否可见 |
| value_of_css_property() | 获取 CSS 属性值 |
示例:
def test_webElement_method(self): e = self.driver.find_element_by_id('t1') e.send_keys('test selenium') time.sleep(2) print(e.get_attribute('type')) print(e.get_attribute('name')) print(e.get_attribute('value')) print(e.value_of_css_property('font')) print(e.value_of_css_property('color')) time.sleep(2) e.clear() 注:以上示例仅为部分方法演示,具体使用请根据需求扩展。
转载地址:http://htdh.baihongyu.com/