博客
关于我
Selenium 核心技术:通识
阅读量:345 次
发布时间:2019-03-04

本文共 2218 字,大约阅读时间需要 7 分钟。

WebDriver运行原理

Selenium WebDriver 是一个开源工具,用于自动化测试。它通过与浏览器的驱动程序通信,执行复杂的自动化操作。了解其运行原理有助于更好地开发和优化自动化测试脚本。

Selenium WebDriver 的核心工作原理是通过 HTTP 协议与浏览器通信。具体流程如下:

  • 测试工程师编写自动化测试脚本,发送指令给浏览器驱动。
  • 浏览器驱动接收指令后,将其转化为浏览器可执行的命令。
  • 浏览器执行命令,完成指定的操作。
  • 浏览器将操作结果返回给驱动程序。
  • 驱动程序根据返回结果反馈给测试脚本,确保测试流程顺利进行。
  • Selenium WebDriver 与浏览器的通信基于 JSON Wire 协议。所有通信数据以 JSON 格式传递,确保高效且可靠。

    元素定位的8种方法

    在 Selenium WebDriver 中,元素定位是核心操作之一。以下是8种常用定位方法:

  • ID 定位
  • 名称定位
  • 链接文本定位
  • 部分链接文本定位
  • XPath 定位
  • 标签(Tag)定位
  • CSS 选择器定位
  • 类名定位
  • 示例代码如下:

    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/

    你可能感兴趣的文章
    poj 3468 A Simple Problem with Integers(线段树 插线问线)
    查看>>
    poj 3485 区间选点
    查看>>
    poj 3518 Prime Gap
    查看>>
    poj 3539 Elevator——同余类bfs
    查看>>
    Qt笔记——官方文档全局定义(三)Macros宏
    查看>>
    poj 3628 Bookshelf 2
    查看>>
    Qt笔记——官方文档全局定义(一)Types数据类型
    查看>>
    POJ 3670 DP LIS?
    查看>>
    POJ 3683 Priest John's Busiest Day (算竞进阶习题)
    查看>>
    POJ 3988 Selecting courses
    查看>>
    POJ 4020 NEERC John's inversion 贪心+归并求逆序对
    查看>>
    poj 4044 Score Sequence(暴力)
    查看>>
    POJ 基础数据结构
    查看>>
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    SpringBoot为什么不需要xml配置文件?
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>
    POJ-1163-The Triangle
    查看>>
    POJ-Fence Repair 哈夫曼树
    查看>>