博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现1000 位斐波那契数算法(附完整源码)
    查看>>
    Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
    查看>>
    Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
    查看>>
    Objective-C实现2D变换算法(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现9x9乘法表算法(附完整源码)
    查看>>
    Objective-C实现9×9二维数组数独算法(附完整源码)
    查看>>
    Objective-C实现A*(A-Star)算法(附完整源码)
    查看>>
    Objective-C实现A-Star算法(附完整源码)
    查看>>
    Objective-C实现abbreviation缩写算法(附完整源码)
    查看>>
    Objective-C实现ABC人工蜂群算法(附完整源码)
    查看>>
    Objective-C实现activity selection活动选择问题算法(附完整源码)
    查看>>
    Objective-C实现AC算法(Aho-Corasick) 算法(附完整源码)
    查看>>
    Objective-C实现adaboost算法(附完整源码)
    查看>>
    Objective-C实现Adler32算法(附完整源码)
    查看>>
    Objective-C实现AES算法(附完整源码)
    查看>>
    Objective-C实现AffineCipher仿射密码算法(附完整源码)
    查看>>
    Objective-C实现aliquot sum等分求和算法(附完整源码)
    查看>>
    Objective-C实现all combinations所有组合算法(附完整源码)
    查看>>