一文玩转 WebDriver API

WebDriver API 详解-初 WebDriver API 详解 这里列了一些WebDriver API 的详细步骤,共3部分,初级,中级,高级供参考,也可以直接使用 文章目录WebDriver API 详解一、初级API 使用步骤1.访问某个网址2.网页的前进和后退3.刷新当前网页4.浏览器窗口最大化5.获取并设置当前窗口的位置6.获取并设置当前窗口的大小7.获取页面title属性值总结 一、初级API 使用步骤 1.访问某个网址 代码如下(示例): #encoding = utf-8 from selenium import 阅读详情

WebDriver API 进阶使用

元素定位

从之前的讲义和学习中,我们知道,WebDriver API的调用以及自动化测试,务必从页面元素的定位开始,那么回顾之前的内容,WebDriver提供了一系列的定位符以便使用元素定位方法。常见的定位符有以下几种:

  • id
  • name
  • class name
  • tag
  • link text
  • partial link text
  • xpath
  • css selector

那么我们以下的操作将会基于上述的定位符进行定位操作。

对于元素的定位,WebDriver API可以通过定位简单的元素和一组元素来操作。在这里,我们需要告诉Selenium如何去找元素,以至于他可以充分的模拟用户行为,或者通过查看元素的属性和状态,以便我们执行一系列的检查。

在Selenium2中,WebDriver提供了多种多样的find_element_by方法在一个网页里面查找元素。这些方法通过提供过滤标准来定位元素。当然WebDriver也提供了同样多种多样的find_elements_by的方式去定位多个元素。

Selenium2提供的8个find_element_by方法去定位元素。在这里我们来具体查看每个方法的详细使用方式。下面的表格将会列出这些具体的方法:

方法Method描述Description参数Argument示例Example
id该方法通过ID的属性值去定位查找单个元素id: 需要被查找的元素的IDfind_element_by_id('search')
name该方法通过name的属性值去定位查找单个元素name: 需要被查找的元素的名称find_element_by_name('q')
class name该方法通过class的名称值去定位查找单个元素class_name: 需要被查找的元素的类名find_element_by_class_name('input-text')
tag_name该方法通过tag的名称值去定位查找单个元素tag: 需要被查找的元素的标签名称find_element_by_tag_name('input')
link_text该方法通过链接文字去定位查找单个元素link_text: 需要被查找的元素的链接文字find_element_by_link_text('Log In')
partial_link_text该方法通过部分链接文字去定位查找单个元素link_text: 需要被查找的元素的部分链接文字find_element_by_partial_link_text('Long')
xpath该方法通过XPath的值去定位查找单个元素xpath: 需要被查找的元素的xpathfind_element_by_xpath('//*[@id="xx"]/a')
css_selector该方法通过CSS选择器去定位查找单个元素css_selector: 需要被查找的元素的IDfind_element_by_css_selector('#search')

接下来的列表将会详细展示find_elements_by的方法集合。这些方法依据匹配的具体标准返回一系列的元素。

方法Method描述Description参数Argument示例Example
id该方法通过ID的属性值去定位查找多个元素id: 需要被查找的元素的IDfind_elements_by_id('search')
name该方法通过name的属性值去定位查找多个元素name: 需要被查找的元素的名称find_elements_by_name('q')
class_name该方法通过class的名称值去定位查找多个元素class_name: 需要被查找的元素的类名find_elements_by_class_name('input-text')
tag_name该方法通过tag的名称值去定位查找多个元素tag: 需要被查找的元素的标签名称find_elements_by_tag_name('input')
link_text该方法通过链接文字去定位查找多个元素link_text: 需要被查找的元素的链接文字find_elements_by_link_text('Log In')
partial_link_text该方法通过部分链接文字去定位查找多个元素link_text: 需要被查找的元素的部分链接文字find_elements_by_partial_link_text('Long')
xpath该方法通过XPath的值去定位查找多个元素xpath: 需要被查找的元素的xpathfind_elements_by_xpath("//div[contains(@class,'list')]")
css_selector该方法通过CSS选择器去定位查找多个元素css_selector: 需要被查找的元素的IDfind_element_by_css_selector('.input_class')

依据ID查找

请查看如下HTML的代码,以便实现通过ID的属性值去定义一个查找文本框的查找:

<input id="search" type="text" name="q" value=""
       class="input-text" maxlength="128" autocomplete="off"/>

根据上述代码,这里我们使用find_element_by_id()的方法去查找搜索框并且检查它的最大长度maxlength属性。我们通过传递ID的属性值作为参数去查找,参考如下的代码示例:

def test_search_text_field_max_length(self):
    # get the search textbox
    search_field = self.driver.find_element_by_id("search")
    # check maxlength attribute is set to 128
    self.assertEqual("128", search_field.get_attribute("maxlength"))

如果使用find_elements_by_id()方法,将会返回所有的具有相同ID属性值的一系列元素。

依据名称name查找

这里还是根据上述ID查找的HTML代码,使用find_element_by_name的方法进行查找。参考如下的代码示例:

# get the search textbox
self.search_field = self.driver.find_element_by_name("q")

同样,如果使用find_elements_by_name()方法,将会返回所有的具有相同name属性值的一系列元素。

依据class name查找

除了上述的ID和name的方式查找,我们还可以使用class name的方式进行查找和定位。

事实上,通过ID,name或者类名class name查找元素是最提倡推荐的和最快的方式。当然Selenium2 WebDriver也提供了一些其他的方式,在上述三类方式条件不足,查找无效的时候,可以通过这些其他方式来查找。这些方式将会在后续的内容中讲述。

请查看如下的HTML代码,通过改代码进行练习和理解.

<button type="submit" title="Search" class="button">
  <span><span>Search</span></span>
</button>

根据上述代码,使用find_element_by_class_name()方法去定位元素。

def test_search_button_enabled(self):
    # get Search button
    search_button = self.driver.find_element_by_class_name("button")
    # check Search button is enabled
    self.assertTrue(search_button.is_enabled())

同样的如果使用find_elements_by_class_name()方法去定位元素,将会返回所有的具有相同name属性值的一系列元素。

依据标签名tag name查找

利用标签的方法类似于利用类名等方法进行查找。我们可以轻松的查找出一系列的具有相同标签名的元素。例如我们可以通过查找表中的<tr>来获取行数。

在这里向大家推荐一个学习交流群:175317069

下面有一个HTML的示例,这里在无序列表中使用了<img>标签。

<ul class="promos">
    <li>
        <a href="http://demo.magentocommerce.com/home-decor.html">
            <img src="/media/wysiwyg/homepage-three-column-promo-
        01B.png" alt="Physical & Virtual Gift Cards">
        </a>
    </li>
    <li>
        <a href="http://demo.magentocommerce.com/vip.html">
            <img src="/media/wysiwyg/homepage-three-column-promo-
        02.png" alt="Shop Private Sales - Members Only">
        </a>
    </li>
    <li>
        <a href="http://demo.magentocommerce.com/accessories/
        bags-luggage.html">
            <img src="/media/wysiwyg/homepage-three-columnpromo-
        03.png" alt="Travel Gear for Every Occasion">
        </a>
    </li>
</ul>

这里面我们使用find_elements_by_tag_name()的方式去获取全部的图片,在此之前,我们将会使用find_element_by_class_name()去获取到指定的<ul>。

具体代码如下:

def test_count_of_promo_banners_images(self):
    # get promo banner list
    banner_list = self.driver.find_element_by_class_name("promos")
    # get images from the banner_list
    banners = banner_list.find_elements_by_tag_name("img")
    # check there are 20 tags displayed on the page
    self.assertEqual(20, len(banners))

依据链接文字link查找

链接文字查找通常比较简单。使用find_element_by_link_text请查看以下示例

<a href="#header-account" class="skip-link skip-account">
    <span class="icon"></span>
    <span class="label">Account</span>
</a>

测试代码如下:

def test_my_account_link_is_displayed(self):
    # get the Account link
    account_link =
    self.driver.find_element_by_link_text("ACCOUNT")
    # check My Account link is displayed/visible in
    # the Home page footer
    self.assertTrue(account_link.is_displayed())

依据部分链接文字partial text查找

这里依旧使用上述的列子进行代码编写:

def test_account_links(self):
    # get the all the links with Account text in it
    account_links = self.driver.\\
    find_elements_by_partial_link_text("ACCOUNT")
    # check Account and My Account link is
    displayed/visible in the Home page footer
    self.assertTrue(2, len(account_links)) 

依据XPath进行查找

XPath是一种在XML文档中搜索和定位节点node的一种查询语言。所有的主流Web浏览器都支持XPath。Selenium2可以用强大的XPath在页面中查找元素。

常用的XPath的方法有starts-with(),contains()和ends-with()等

若想要了解更多关于XPath的内容,请查看http://www.w3schools.com/XPath/

如下有一段HTML代码,其中里面的<img>没有使用ID,name或者类属性,所以我们无法使用之前的方法。亚这里我们可以通过<img>的alt属性,定位到指定的tag。

<ul class="promos">
    <li>
        <a href="http://demo.magentocommerce.com/home-decor.html">
            <img src="/media/wysiwyg/homepage-three-column-promo-
        01B.png" alt="Physical & Virtual Gift Cards">
        </a>
    </li>
    <li>
        <a href="http://demo.magentocommerce.com/vip.html">
            <img src="/media/wysiwyg/homepage-three-column-promo-
        02.png" alt="Shop Private Sales - Members Only">
        </a>
    </li>
    <li>
        <a href="http://demo.magentocommerce.com/accessories/
        bags-luggage.html">
            <img src="/media/wysiwyg/homepage-three-columnpromo-
        03.png" alt="Travel Gear for Every Occasion">
        </a>
    </li>
</ul>

具体代码如下:

def test_vip_promo(self):
    # get vip promo image
    vip_promo = self.driver.\\
    find_element_by_xpath("//img[@alt='Shop Private Sales - Members Only']")
    # check vip promo logo is displayed on home page
    self.assertTrue(vip_promo.is_displayed())
    # click on vip promo images to open the page
    vip_promo.click()
    # check page title
    self.assertEqual("VIP", self.driver.title)

当然,如果使用find_elements_by_xpath()的方法,将会返回所有匹配了XPath查询的元素。

依据CSS选择器进行查找

CSS是一种设计师用来描绘HTML文档的视觉的层叠样式表。一般来说CSS用来定位多种多样的风格,同时可以用来是同样的标签使用同样的风格等。类似于XPath,Selenium2也可以使用CSS选择器来定位元素。

请查看如下的HTML文档。

<div class="minicart-wrapper">
    <p class="block-subtitle">Recently added item(s)
        <a class="close skip-link-close" href="#" title="Close">×</a>
    </p>
    <p class="empty">You have no items in your shopping cart.
    </p>
</div>

我们来创建一个测试,验证这些消息是否正确。

def test_shopping_cart_status(self):
    # check content of My Shopping Cart block on Home page
    # get the Shopping cart icon and click to open the
    # Shopping Cart section
    shopping_cart_icon = self.driver.\\
    find_element_by_css_selector("div.header-minicart
                                 span.icon")
    shopping_cart_icon.click()
    # get the shopping cart status
    shopping_cart_status = self.driver.\\
    find_element_by_css_selector("p.empty").text
    self.assertEqual("You have no items in your shopping cart.",
    shopping_cart_status)
    # close the shopping cart section
    close_button = self.driver.\\
    find_element_by_css_selector("div.minicart-wrapper
                                 a.close")
    close_button.click()

鼠标事件

Web测试中,有关鼠标的操作,不只是单击,有时候还要做右击、双击、拖动等操作。这些操作包含在ActionChains类中。

常用的鼠标方法:

  • context_click() ##右击
  • douch_click() ##双击
  • drag_and_drop() ##拖拽
  • move_to_element() ##鼠标停在一个元素上
  • click_and_hold() # 按下鼠标左键在一个元素上

例子:

#图3.4
#如图3.x4,假如一个web 应用的列表文件提供了右击弹出快捷菜单的的操作。可以通过context_click()
#方法模拟鼠标右键,参考代码如下:
#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右击的元素
right =driver.find_element_by_xpath("xx")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right).perform()
#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要双击的元素
double =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作
ActionChains(driver).double_click(double).perform()

键盘事件

键盘操作经常处理的如下:

代码描述
send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.SPACE)空格键(Space)
send_keys(Keys.TAB)制表键(Tab)
send_keys(Keys.ESCAPE)回退键(Esc)
send_keys(Keys.ENTER)回车键(Enter)
send_keys(Keys.CONTROL,'a')全选(Ctrl+A)
send_keys(Keys.CONTROL,'c')复制(Ctrl+C)

代码如下

#coding=utf-8
from selenium import webdriver
#引入Keys 类包
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#输入框输入内容
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
#删除多输入的一个m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
time.sleep(3)
#输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys(u"教程")
time.sleep(3)
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')

模块化与类库

线性测试

至此之前,我们介绍的测试脚本,尽管使用了unittest测试框架,但是测试是按照指定的线路进行的,是线性的测试,完全遵循了脚本的执行顺序。

测试脚本1

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://wwww.xxx.com")
driver.find_element_by_id("tbUserName").send_keys("username")
driver.find_element_by_id("tbPassword").send_keys("123456")
driver.find_element_by_id("btnLogin").click()
#执行具体用例操作
......
driver.quit ()

如上图,其实登录的模块可以共用。

模块化

模块话是自动化测试的第一个延伸和基础。需要对自动化重复编写的脚本进行重构(refactor),将重复的脚本抽取出来,放到指定的代码文件中,作为共用的功能模块。

测试脚本1:Login.py

#登录模块
def login():
driver.find_element_by_id("tbUserName").send_keys("username")
driver.find_element_by_id("tbPassword").send_keys("456123")
driver.find_element_by_id("btnLogin").click()

另一份文件 quit.py

#退出模块
def quit():
..............

自动化的测试:代码如下

#coding=utf-8
from selenium import webdriver
import login,quit_ #调用登录、退出模块
driver = webdriver.Firefox()
driver.get("http://wwww.xxx.com")
#调用登录模块
login.login()
#其它个性化操作
......
#调用退出模块
quit.quit()

参数化驱动

数据驱动

如果说模块化是自动化测试的第一步,那么数据驱动是自动化的第二步,从本意上来讲。数据改变更新驱动自动化的执行。从而引起测试结果的改变。其实类似于参数化。

示例代码

#coding=utf-8
from selenium import webdriver
import time
values=['selenium','webdriver',u'软件自动化测试']
# 执行循环
for serch in values:
    driver = webdriver.Firefox()
    driver.get("https://www.baidu.com")
    driver.find_element_by_id("kw").send_keys(serch)
    time.sleep(3)
    .....

关于参数化驱动,我们可以将数据放到csv中,然后通过读取csv的数据进行自动化测试。

关键字驱动

这里的数据换成了特别的数据,就是关键字。

结语:

在这里跟大家推荐一个学习资料分享群:175317069,里面大牛已经为我们整理好了许多的学习资料,有自动化,接口,性能等等的学习资料!人生是一个逆水行舟的过程,不进则退,咱们一起加油吧!

 

第三章 Webdriver API简介 Selenium 2.0主要的特性就是与WebDriverAPI的集成。WebDriver旨在提供一个更简单,更简洁的编程接口以及解决一些Selenium-RC API的限制。Selenium-Webdriver更好的支持页面本身不重新加载而页面的元素改变的动态网页。WebDriver的目标是提供一个良好设计的面向对象的API,提供了对于现代先进web应用程序测试问题的改进支持。 3.1 Web 阅读详情

相关推荐

Mission Planner连接Autopilot保姆级教程:从USB到无线全搞定

本文提供Mission Planner连接Autopilot的全面指南,涵盖USB直连、无线数传、蓝牙适配等多种连接方案。详细讲解驱动安装、波特率匹配、性能优化等关键步骤,并分享多链路冗余配置与故障转移的高阶技巧,助你快速解决连接问题。

weixin_28455801的博客 379

解决Selenium无法启动的问题:WebDriverException: Message: chrome not reachable

上来先讲重点,如果出现这个问题,先检查两个地方: 和网上大多数的文章类似,先看你的hosts文件中localhost的指向 排查第一个问题之后,打开你的进程管理器,看看是不是有已经运行的chromedriver程序占用了端口 一般都是这两个问题造成的。下面是细节: 这两天,我也遇到了这个鬼魅的问题,因为我的自动化程序已经跑了好几个月了,在我没做任何修改的情况下,突然这几天我收不到通知短信...

点火三周的专栏 5万+

IB网络下不同租户业务隔离方案

IB(InfiniBand)网络隔离可以在不同的通信模式下实现,其中包括 IPoIB(IP over InfiniBand)通信模式。在 IPoIB 模式下,InfiniBand 网络可以承载 IP 数据包,使得基于 IP 的应用程序能够在 InfiniBand 网络上进行通信。在这种情况下,IB 网络隔离通常指通过配置 Partition Key(PKey)来实现不同的租户或应用程序之间的网络隔离。然而,IB 网络隔离并不仅限于 IPoIB 模式。

guganly的专栏 1529

高级自动化测试常见面试题(Web、App、接口)

简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好的体现面向对象语言(比如java或者python)的面向对象和封装特性。断言的英文是assertion,断言检查的英文是assertion checking。断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。开放性问题,带点主观意见1.对比其他熟悉的自动化工具的优缺点2.自动化的简要方案(简要的同时关键内容请具体)。(提示:appnium 等)

公众号【伤心的辣条】资料领取~ 1264

FFmpeg音频转AAC/M4A终极指南:从基础到高级参数调优

本文详细介绍了使用FFmpeg将音频转换为AAC/M4A格式的完整指南,从基础安装到高级参数调优。涵盖FDK-AAC编码器的使用、VBR/CBR模式选择、音质控制技巧以及实战案例,帮助用户在不同场景下实现高质量的音频转换。特别适合需要优化音频文件大小与音质平衡的开发者和音频处理专业人士。

rust6ferris的博客 726

企业微信微盘API权限避坑指南:为什么你的Python脚本无法获取文件列表?

本文深入解析了企业微信微盘API的权限模型,解释了为何即使使用超级管理员账号,Python脚本也可能因权限不足而无法获取文件列表。核心在于微盘API基于“应用身份”而非“用户身份”进行校验,应用只能访问自身创建的空间。文章提供了构建文件上传代理、利用事件回调等合规的替代方案,帮助企业实现高效数据同步。

weixin_29322553的博客 533

Google Chrome 和 Chromium 自定义数据目录

Google Chrome 和 Chromium 自定义数据目录

yudiandian2014的专栏 1961

什么是Merkle树?用“文件柜”类比理解区块链的核心技术

Merkle树是一种用于区块链的数据结构,像一个高效的“文件柜”,用于存储和验证大量交易数据。比特币通过Merkle树将交易哈希组织成树状结构,层层汇总,最终生成一个唯一的根哈希,存储在区块头中。这种设计大幅减少数据存储和验证成本,支持快速校验交易的完整性和存在性。Merkle树通过密码学保证数据不可篡改,广泛应用于比特币、区块链及其他分布式系统。它的优势在于高效、轻量和安全,尤其适合轻节点验证和数据同步。理解Merkle树就像掌握区块链的“索引秘籍”,是Web3世界的关键技术。

在路上的专栏 1193

自动化测试模型——模块化与参数化

含义 在创建函数或方法时设置参数,使之可根据不同的参数执行相应操作。 实例 创建一个网易邮箱的测试脚本test_mail.py: from time import sleep from selenium import webdriver dri = webdriver.Chrome() dri.get("http://mail.163.com") # 登录 sleep(2) ...

qq_39322743的博客 737

从示波器波形看懂死区:手把手教你调ST MCU的PWM,避免三相桥直通炸管

本文详细解析了如何通过示波器波形判断PWM死区时间,并手把手教你调整STM32高级定时器寄存器,避免三相逆变桥直通炸管。文章涵盖死区时间的本质与风险、STM32配置详解、示波器调试技巧及FOC系统中的特殊考量,帮助工程师优化电机驱动性能与安全性。

weixin_30315723的博客 735

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 157

软件测试面试题:webdriver可以用来做接口测试吗?

不可以,webdriver是专门做web的UI自动化参数

一亿并发的博客 296

Unreal5从入门到精通之如何在VR中使用3DUI

前面我们讲过《Unreal5从入门到精通之UMG的使用》一般制作游戏时,UI都是添加到屏幕视窗上面的,但是在制作VR时,我们往往需要制作一个3D的UI,放置在场景中,然后使用手柄的射线来和UI进行交互。今天我们就来讲解下,如何在VR中创作和交互3DUI首次操作会感觉好复杂,多多练习,当你熟悉了UE蓝图的操作后会发现,这只是一个常规的蓝图操作而已。祝大家在虚幻的学习过程中非常顺利。希望这篇博客对你有所帮助。

TxNet 1985

WebDriver API

本文会对 Selenium 常用 API 进行详细的介绍

YeZh1Yong 的博客 1135

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

webdriver库里的常用 API

定义:uiautomator 是 安卓 sdk 中自带的一个用于调试的工具。作用:通过 uiautomator 我们可以定位原生 APP 中界面里出现的元素,获取到该元素的具体信息。从而方便我们使用 python 脚本来对其进行定位操作我们当前最终想要做的事情就是通过 python 去编写测试脚本,从而让我们之前手工的测试操作可以演变成运行对应的 py 文件。所以在这个过程中我们肯定会做的事情就是找到某个元素 ,然后对这个元素进行具体的操作。

dragons_的博客 1443

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Selnium Chrome WebDriver API使用

Selnium Chrome WebDriver API使用 使用 1.带参数使用 > selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver',port=0, chrome_options=None, service_args=None,desired_capabilities=None, se...

非常重的猪 1965

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Selenium3 Python WebDriver API源码探析(20)WebDriver协议概述

WebDriver协议 早期Selenium和WebDriver是两个独立的项目,Selenium早期主要依靠将操作转换为JavaScript然后注入浏览器实现浏览器的自动化,WebDriver将浏览器原生API封装成一套更加面向对象的API,但是由于不同浏览器内核的差异,因此为了适配,必须对不同浏览器实现不同的API。在Selenium2之后两个项目合并,我们常说的Selenium其实主要指的就是WebDriver API。当前Selenium稳定版本的主版本为3,beta版本的Selenium4已经在路

mighty13的专栏 3万+

WebDriver API文档

WebDriver API文档 定位元素 find_element_by_id:通过id属性定位 find_element_by_name:通过name属性定位 find_element_by_class_name:通过class属性定位 find_element_by_tag_name:通过tagname(div,input)定位元素 find_element_by_link...

weixin_39460408的博客 2477

自动化测试webdriver常用API总结

selenium 是一个强大的开源web功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试;支持多种开发语言:Python、Java、Ruby等同时selenium测试直接自动化运行在浏览器中,支持的浏览器有:IE、Chrome、Firefox等;selenium2.0的主要新功能是集成了WebDriver,WebDriver通过原生浏览器支持或者浏览器扩张直接控制浏览器。

Free355的博客 1512

Selenium WebDriver——如何测试REST API

http://www.vinsguru.com/selenium-webdriver-how-to-test-rest-api/ Selenium WebDriver——如何测试REST API 前言: 关于如何使用selenium webdriver测试rest api的问题,我已经遇到过很多次了;你可以在StackOverflow.com上看到很多相关的问题。不熟悉自动化测试的新人有时不理解S...

软测小生 1952

【selenium】WebElement常用api、WebDriver常用api、三种等待方式

说明:总结内容均以java演示。

weixin_40772077的博客 2420

Python+selenium WebDriver API

目录 2.1 操作元素基本方法 2.2 常用8种元素定位(Firebug和firepath) 2.3 xpath定位 2.4 CSS定位 2.5 SeleniumBuilder辅助定位元素 2.6 操作元素(键盘和鼠标事件) 2.7 多窗口、句柄(handle) 2.8 定位一组元素elements 2.9 iframe 2.10 select下拉框 2.1...

dianbachan6348的博客 1213

WebDriver常用API

1、 元素定位的方式: id name tag class link_text partial_link_text xpath css 定位元素的时候,有一个要求:所有的定位属性,必须是网页中唯一的一个属性。 2、 Webdriver中定位元素的基本语法: 最常用:find_element_by_id、name、class_name、link_text 最精确能定位元素:find _element_by_xpath Xpath:是一个页面元素在页面中表现最基本的路径 相对路径://*[

qq_42305961的博客 2027

WebDriver API 干货

Webdriver API

qq_44434169的博客 430

【软件测试学习day6】WebDriver常用的API

本期讲解:WebDriver常用的API。

我的主页 1220
上一篇: Jmeter做压力测试的心得
下一篇: 接口测试之深入理解HTTPS
TestingGDR
博客等级 码龄8年 496粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值