WebDriver API学习笔记
来源:互联网 发布:知乎 汉景帝杀吴太子 编辑:程序博客网 时间:2024/06/08 12:36
一、8种定位元素方法
find_element_by_id(" ")---对应id
find_element_by_class_name(" ")---对应class
find_element_by_name(" ")---对应name
find_element_by_link_text(" ")---对应链接文本
find_element_by_partial_link_text(" ")---对应部分链接文本,针对较长文本,可以取部分文本
find_element_by_tag_name(" ")---对应标签名,例如input ,div这种
find_element_by_xpath(" ")---对应元素的xpath路径
find_element_by_css_selector(" ")
find_element_by_id("kw")=find_element(By.ID,"kw")
xpath的几种定位方法:
find_element_by_xpath("//*[@id="kw"]") //表示某个层级下,*代表任何标签下,kw是id属性值
find_element_by_xpath("//input[@id="kw"]") 标签最好写死,这样定位更准确
find_element_by_xpath("//input[@name="kw"]")
find_element_by_xpath("//input[@class="kw"]")
find_element_by_xpath("//input[@value="kw"]")
例如:
<form id="form" class="fm" name="f" action="/s">
<span class="bg s_ipt_wr quickdelete-wrap">
<span class="bg s_ipt">
<input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off"/>
<input id="kw2" class="s_ipt2" name="wd" value="" maxlength="255" autocomplete="off"/>
find_element_by_xpath("//form[@id=’form‘]/span[2]/input[2]")
或者
find_element_by_xpath("//form[@id=’form‘]/span[@class="bg s_ipt"]/input[@kw=" kw2"]")
或者
find_element_by_xpath("//input[@id="kw2" and @class="s_ipt2]"")
css的几种定位方法:
find_element_by_css_selector("#kw") #表示id---定位id
find_element_by_css_selector("[name=wd]")或者find_element_by_css_selector("[name="wd"]") ---定位name
find_element_by_css_selector(".s_ipt") .表示class----定位class
find_element_by_css_selector(" span.bg.s_ipt>input"#kw"")
find_element_by_css_selector("form#form>span[2]>input[2]")
注意:不管用什么定位方式,它一定是唯一的标识一个元素,不同的页面的没有关系,在同一个页面不能重复
二、WebDriver常用方法:
driver=webdriver.Chorm()
driver.get("http://www.baidu.com") 用谷歌浏览器打开百度首页
driver.set_window_size(400,500) 设置浏览器宽度400,高度500
driver.maximize.window() 设置浏览器全屏显示
driver.back() 后退
driver.forward() 前进
driver.refresh() 刷新页面
claer()清除文本
send_keys(" ") 模拟按键输入
click() 单击元素
submit() 用于提交表单,例如,在搜索框输入关键字之后的回车操作,就可以通过submit()方法模拟
size 返回元素的尺寸
text 获取元素的文本--断言常用方法
get_attribute(name) 获得属性值
is_displayed() 设置元素是否用户可见
鼠标事件:
perform() 执行所有ActionChains中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop()拖动
move_to_element() 鼠标悬停
要先导入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
above=driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(above).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)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v')黏贴(Ctrl+V)
获得验证信息:主要用于做断言driver.current_url 获取当前页面URL
driver.title获取当前页面的标题
driver.text获取搜索条目的文本信息
显示等待:针对某个元素去等待的,WebDriver等待某个成立时继续执行,否则在达到最大时长时抛出异常
第一种方法:
from selenium.webdriver.support import expected_conditions as EC
element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((BY.ID,"kw"))
第二种方法:
for i in range(60): if "selenium_百度搜索" in dr.title: break else: time.sleep(0.5)else: raise NameError("time out")
隐式等待,是针对当前脚本的所有元素的等待
driver.implicitly_wait(10)
单位时间为秒,10秒并非一个固定的等待时间,它并不影响脚本的执行速度。它并不针对页面上的某一元素进行等待,当脚本执行到某个元素定位时,如果元素可以定位,则继续执行,如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。假设在第6秒定位到了元素则继续执行,若直到超过设置时长10秒还没定位到元素,则抛出异常
定位一组元素
texts=driver.find_elements_by_xpath(" ")
for t in texts:
print(t.text)
多表单切换:一个页面嵌套了另外一个页面
在web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to_frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中
driver.switch_to.frame(" ")切换表单,默认接收id和name,如果没有id和name,我们可以先用xpath把元素定位出来,然后再传参
例如:
element=driver.find_elements_by_xpath("//ifame[@id="x-URS-iframe"]")driver.switch_to_frame(element)
driver.switch_to.default_content() 退出表单
switch_to_frame()默认可以直接取表单的id或者name属性,如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。
先通过xpath定位到iframe
xf=driver.find_element_by_xpath(" ")
driver.switch_to_frame(xf)
多窗口切换:
switch_to.window()方法,可以实现在不同的窗口之间切换
handle=driver.current_window_handle 获得当前窗口句柄
handles=driver.window_handles 获得当前所有打开的窗口的句柄
driver.switch_to.window(handle) 切换到相应的窗口
警告框处理:
driver.switch_to_alert().accept() 接受警告框
driver.switch_to_alert().text 返回alert/confirm/prompt中的文字信息
上传文件:
第一种html方法
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>upload_file</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>upload_file</h3>
<input type="file" name="file" />
</div>
</div>
</body>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></scrip>
</html>
from selenium import webdriverdriver=webdriver.Chrome()driver.get("file:///C:\\Users\\zhengyh\\PycharmProjects\\untitled2\\upload_file.html")-----html文件打开的url地址driver.find_element_by_name("file").send_keys("F:\\upload.txt")------附件的存放地址第二种方法:
AutoIt来实现上传,下载地址:https://www.autoitscript.com/site/autoit/downloads/
AutoIt Windows Info:用于识别windows控件信息
Compile Script to.exe用于将AutoIt生成exe执行文件
Run Script:用于执行AutoIt脚本
SciTE Script Editor用户编写AutoIt脚本
from selenium import webdriverimport osdriver=webdriver.Chrome()driver.get("file:///C:\\Users\\zhengyh\\PycharmProjects\\untitled2\\upload_file.html")#driver.find_element_by_name("file").send_keys("F:\\upload.txt")driver.find_element_by_name("file").click()os.system("F:\\upload.au2.exe")
操作cookie:
get_cookies() 获得所有cookie信息
get_cookie(name)返回字典的key为name的cookie信息
add_cookie(cookie_dict) 添加cookie,cookie_dict指字典对象,必须有name和value值
delete_cookie(name,optionString) 删除cookie信息,name是要删除的cookie的名称,optionString是该cookie的选项,目前支持的选项包括路径,域
delete_all_cookies() 删除所有cookie信息
调用javaScript:滑动窗口的滚动条
js="windos.scrollTo(100,450);"
driver.execute_script(js)
下拉框的处理:
from selenium.webdriver.support.select import Select
sel=driver.find_element_by_xpath(" ")
Select(sel).select_by_value("50") 50是value值
Select用于定位<select>标签
select_by_value()方法用于定位选项中的value值
窗口截图:
driver.get_screenshot_as_file("图片保存路径")
关闭窗口:
quit() 关闭当前所有窗口
close() 关闭当前一个窗口
- WebDriver API学习笔记
- selenium Webdriver学习笔记
- python+webdriver学习笔记
- python+webdriver学习笔记
- webdriver的一些学习笔记
- Selenium-WebDriver学习笔记(一)
- Selenium Webdriver (学习笔记)
- 20170922学习笔记Selenium 2第四章WebDriver API 4.1定位元素
- 20171021学习笔记Selenium 2第四章WebDriver API 4.11警告处理4.14操作Cookie
- webdriver api
- 20171013学习笔记Selenium 2 第四章WebDriver API 4.6获得验证消息 4.7设置元素等待
- Selenium webdriver 学习笔记(一) - 环境搭建
- Selenium WebDriver学习笔记(一)
- selenium 2.0 webdriver 学习笔记(一)
- 【selenium学习笔记】webdriver操作浏览器
- 【Selenium学习笔记】webdriver操作下拉框
- selenium(webdriver)学习笔记1--ChromeDriver
- selenium(webdriver)学习笔记3--InternetExplorerDriver
- zookeeper原理
- java反射中参数问题
- easyUI学习过程(二) ----在myeclipse上创建web项目并运行html文件
- xwPython的安装与使用
- 取numpy数组的某一行某一列
- WebDriver API学习笔记
- vue-chartjs
- java SpringMVC + Mybatis 一套前台到后台完整获取数据的步骤
- COS腾讯云对象存储的集成
- SpringBoot入门--Demo篇
- 安装Tomcat
- HDU
- VS2015中CString转string方法
- Spark 之 UDF 函数