自动化测试webdriver常用的API

上一篇 / 下一篇  2021-07-16 09:41:46 / 个人分类:测试

#先看一下简单的API
# coding = utf-8
from selenium import webdriver
import time
browser=webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()

脚本解析
coding = utf-8
可加可不加,开发人员喜欢加一下,防止乱码。
from selenium importwebdriver
要想使用selenium 的webdriver 里的函数,首先把包导进来
browser =webdriver.Firefox()
我们需要操控哪个浏览器呢?Chrome ,当然也可以换成Ie 或Firefox。
browser.get()
可以随便取,但后面要用它操纵 各种函数执行。
browser.find_element_by_id(“kw”).send_keys(“selenium”)
一个控件有若干属性id、name、(也可以用其它方式定位),百度输入框的id 叫kw ,我要在输入框里输入 selenium 。
browser.find_element_by_id(“su”).click()
搜索的按钮的id 叫su ,我需要点一下按钮(click() )。
browser.quit()
退出并关闭窗口的每一个相关的驱动程序。
一、元素的定位
webdriver 提供了一系列的对象定位方法,常用的有以下几种
1、id和name定位
(举例:通过前端工具,找到百度输入框的相关属性)
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
id=”kw” 通过find_element_by_id(“kw”) 函数就是捕获到百度输入框
name=”wd”通过find_element_by_name(“wd”)函数同样也可以捕获百度输入框
2、class name 和 tag name的定位
从上面的百度输入框的属性信息中,我们看到,不单单只有id 和name 两个属性, 比如class 和tag name(标签名)

input 就是一个标签的名字
可以通过find_element_by_tag_name(“input”) 函数来定位。
class=“s_ipt”,
通过find_element_by_class_name(“s_ipt”)函数捕获百度输入框
3、link text
有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link定位

#coding=utf-8
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element_by_link_text("hao123").click()
browser.quit()
4、partial link text
#coding=utf-8
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element_by_partial_link_text("hao").click()
browser.quit()
5、xpath
XPath 扩展了上面id 和name 定位方式,提供了很多种可能性。
6、css selector
CSS 的比较灵活可以选择控件的任意属性,上面的例子中: find_element_by_css_selector("#kw")通过find_element_by_css_selector( )函数,选择取百度输入框的id 属性来定义
webdriver 中比较常用的操作对象的方法有下面几个:
click 点击对象
send_keys 在对象上模拟按键输入
clear 清除对象的内容,如果可以的话
submit清除对象的内容,如果可以的话
text 用于获取元素的文本信息

智能等待:通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

TAG:

 

评分:0

我来说两句

Open Toolbar