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

    你可能感兴趣的文章
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    Orleans框架------基于Actor模型生成分布式Id
    查看>>
    SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
    查看>>
    ORM sqlachemy学习
    查看>>
    Ormlite数据库
    查看>>
    orm总结
    查看>>
    os.environ 没有设置环境变量
    查看>>
    os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
    查看>>
    os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>