python+selenium常用语句.docx
- 文档编号:27541805
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:19
- 大小:38.76KB
python+selenium常用语句.docx
《python+selenium常用语句.docx》由会员分享,可在线阅读,更多相关《python+selenium常用语句.docx(19页珍藏版)》请在冰豆网上搜索。
python+selenium常用语句
一、元素的定位
1.webdriver提供的8种页面元素定位方法:
id/name/classname/tagname/linktext/partiallinktext/xpath/cssselector
其中python对应的8种方法:
find_element_by_id() 如:
find_element_by_id("kw")
find_element_by_name() 如:
find_element_by_name("wd")
find_element_by_class_name() 如:
find_element_by_class_name("s_ipt")
find_element_by_tag_name() 如:
find_element_by_tag_name("input")
find_element_by_link_text() 如:
find_element_by_link_text(u"新闻")
find_element_by_partial_link_text() 如:
find_element_by_partial_link_text(u"一个很长的")
find_element_by_xpath() 如:
find_element_by_xpath(" .//*[@id=‘kw‘]")
find_element_by_css_selector() 如:
find_element_by_css_selector("#kw")
注意:
a.python对中文支持不好,在对于有中文的地方加小写u,作用是把中文字符串转换成unicode编码,如上面link_text(u"新闻")
b.xpath中如果不想指定标签名,也可用(*)代替,
2.xpath定位:
2.1绝对路径定位:
find_element_by_xpath("/html/body/div/div[2]/div/form/span/input")
2.2利用元素属性定位:
find_element_by_xpath("//*/input[@id=‘kw‘]") //表示当前目录
2.3层级与属性结合:
find_element_by_xpath("//span[@class=‘bgs_pt‘]/input") /input表示父元素下的子元素
可以用这种方法,一层层网上,直到最外层标签
2.4使用逻辑运算符:
find_element_by_xpath("//input[@id=‘kw‘and@class=‘su‘]/span/input")
3.css定位 速度快于xpath
css常见语法:
例如:
通过.class定位的:
find_element_by_css_selector(".intr")
通过#id定位的:
find_element_by_css_selector("#firstname")
通过标签名定位的:
find_element_by_css_selector("input")
通过父子关系定位的:
find_element_by_css_selector("div>input")
通过属性定位:
find_element_by_css_selector("input[type=‘submit‘]")
组合定位:
find_element_by_css_selector(span.bgs_ipt>input.s_ipt)
//父标签span对应class属性为bgs_ipt的节点下的子标签input且这个子标签class属性为s_ipt
二、浏览器控制
1.控制浏览器大小:
set_window_size() 例如:
driver.set_window_size(400,500)
maximize_window() 例如:
driver.maximize_window() #无参数
2.浏览器后退、前进:
back()-后退、farward()-前进
三、鼠标事件
ActionChains类提供的常用方法:
1.1 perform():
执行ActionChains中存储的所有行为,对整个事件进行提交
1.2context_click():
右击
如:
from mon.action_chains import ActionChains
...
ActionChains(dr).context_click(docfile).perform()
1.3 double_click():
双击
如:
from mon.action_chains import ActionChains
...
doubleClick=dr.find_element_by_id("xxx")
ActionChains(dr). double_Click(doubleClick).perform()
1.4 drag_and_drop(source,target):
拖动
如:
from mon.action_chains import ActionChains
...
dsource=dr.find_element_by_id("xxx") #拖动的源元素
dtarget=dr.find_element_by_id("xxx") #释放的目标目标元素
ActionChains(dr).drag_and_drop(dsource,dtarget).perform()
1.5 move_to_element():
鼠标悬停
如:
from mon.action_chains import ActionChains
...
above=dr.find_element_by_id("xxx")
ActionChains(dr).move_to_element(above).perform()
四、键盘事件
1.首先要导入键盘事件的包
1.
1.frommon.keysimportKeys
2....
3.dr.get("")
4.#输入内容
5.dr.find_element_by_id("kw").send_keys("seleniumm")
6.#删除输入内容的最后一个字母,
7.dr.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
8.#输入:
空格+教程
9.dr.find_element_by_id("kw").send_keys(Keys.SPACE)
10.dr.find_element_by_id("kw").send_keys(u"教程")
11.#ctrl+a全选输入框内容
12.dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘)
13.
14.#ctrl+x剪贴输入框内容
15.dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘x‘)
16.
17.#ctrl+v剪贴输入框内容
18.dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘v‘)
19.
20.#回车键操作
21.dr.find_element_by_id("su").send_keys(Keys.ENTER)
22.dr.close()
常用的键盘操作整理:
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+x
send_keys(Keys.F1) #F1,类似的有F1-F12
五、获取验证
1.通常用到的验证信息有:
title、URL、text
dr.title
dr.current_url
dr.find_element_by_id("xx").text
六、设置等待
1.显示等待:
等待某个条件成立时,继续执行,否则达到最大等待时间后抛出异常:
TimeoutException,显示等待是针对当前要定位元素使用
WebDriverWait(driver, timeout,poll_frequency,ignored_exceptions=None).until(method,message)
示例:
WebDriverWait(dr,5,0.5,None).until(
expected_conditions.presence_of_element_located((By.ID,"kw1")),message=‘test‘)
解释:
A.WebDriverWait():
在设置时间内,默认间隔一段时间检测一次当前页面元素是否存在,若超过当前指定时间检测不到则抛出异常;
B.driver:
webdriver的浏览器驱动,ie、firefox、chromea
C.timeout:
最长超时时间,以秒为单位
D.poll_frequency:
休眠间隔时间-步长,默认0.5秒
E.ignored_exceptions:
超时后异常信息,默认抛出NoSuchElementException异常
F.until(method,message):
调用该方法提供的驱动作为一个参数,直到返回值为True
G.until_not(method,message):
调用该方法提供的驱动作为一个参数,直到返回值为False
H.expected_conditions类提供的预期条件实现有:
title_is:
判断标题是否是xx
title_contains:
判断标题是否包含xx
presence_of_element_located:
元素是否存在
visibility_of_element_located:
元素是否存在
visibility_of:
是否可见
presence_of_all_elements_located:
判断一组元素是否存在
text_to_be_present_in_element:
判断元素是否有xx文本信息
text_to_be_present_in_element_value:
判断元素值是否有xx文本信息
frame_to_be_available_and_switch_to_it:
表单是否可见,并切换到该表单
invisibility_of_element_located:
判断元素是否隐藏
element_to_be_clickable:
判断元素是否点击,它处于可见和启动状态
staleness_of:
等到一个元素不再依附于DOM
element_to_be_selected:
被选中的元素
element_located_to_be_selected:
一个期望的元素位于被选中
element_selection_state_to_be:
一个期望检查如果给定元素被选中
element_located_selection_state_to_be:
期望找到一个元素并检查是否是选择状态
alert_is_present:
预期一个警告信息
2.隐式等待:
通过一定的时长等待页面所有元素加载完成,哪个元素超出设置时长没被加载就抛出异常NoSuchElementException,隐式等待是针对所有元素的
implicitly_wait(5) #默认单位为秒
示例:
dr.implicitly_wait(5)
七、sleep休眠 python中强制的程序等待
fromtimeimportsleep
sleep(4) #默认单位秒,设置小于1秒的时间可以用小数点如sleep(0.6)
八、定位一组元素,类似与1中定位单个元素方法
find_elements_by_id() 如:
find_elements_by_id("kw")
find_elements_by_name() 如:
find_elements_by_name("wd")
find_elements_by_class_name() 如:
find_elements_by_class_name("s_ipt")
find_elements_by_tag_name() 如:
find_elements_by_tag_name("input")
find_elements_by_link_text() 如:
find_elements_by_link_text(u"新闻")
find_elements_by_partial_link_text() 如:
find_elements_by_partial_link_text(u"一个很长的")
find_elements_by_xpath() 如:
find_elements_by_xpath(" .//*[@id=‘kw‘]")
find_elements_by_css_selector() 如:
find_elements_by_css_selector("#kw")
使用场景:
a.批量操作对象,如选中页面上所有复选框
b.先获取一组对象,再在这组对象里定位需要的的一些对象,如定位所有复选框,然后选择最后一个
例如:
代码如下
checkbox.htm页面:
1.
1.
2.body{font-size:
12px;font-family:
Tahoma;}
3..checkbox{vertical-align:
middle;margin-top:
0;}
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
python代码:
1.
1. from selenium import webdriver
2.
2.
1. dr=webdriver.Firefox()
2. dr.get("D:
\\workspace\\pySelenium\\resources\\checkbox.htm")
3.#使用tagname方式选择页面上所有tagname为input的元素
4.select_tagname=dr.find_elements_by_tag_name("input")
5.#使用xpath方式选择页面上所有tagname为input的元素
6.select_xpath=dr.find_elements_by_xpath("//input[@type=‘checkbox‘]")
7.#使用css_select方式选择页面上所有tagname为input的元素
8.select_css=dr.find_elements_by_css_selector(‘input[type=checkbox]‘)
9.foriinselect_tagname:
10.#循环对每个input元素进行点击选中操作
11.ifi.get_attribute("type")==‘checkbox‘:
12.i.click()
13.
14.forjinselect_xpath:
15.#循环对每个input元素进行点击取消操作
16.j.click()
17.forkinselect_css:
18.#循环对每个input元素进行点击选中操作
19.k.click()
20.#打印出checkbox的个数
21.print‘----页面上checkbox的个数为:
‘,len(select_css)
22.#使用pop()获取1组元素的第几个元素
23.select_css.pop(0).click()#第一个
24.select_css.pop
(1).click()#第二个
25.select_css.pop().click()#最后一个
26.select_css.pop(-1).click()#最后一个
27.select_css.pop(-2).click()#倒数第二个
28.dr.close()
备注:
pop():
选择一组元素中的某一个,要注意的是:
pop()和pop(-1)都表示最后一个元素
九、多表单切换(对于有frame嵌套表单的操作)
frame页面:
1.
1.
2.
3.
7.
8.
python代码:
1.
1.dr.get("D:
\\workspace\\pySelenium\\resources\\frame.htm")
2.
3.dr.switch_to_frame("frameid")#通过frame的id进入iframe
4.#dr.switch_to_frame("frameName")#通过frame的name进入iframe
5.#下面可以对frame进行操作了
6.dr.find_element_by_id("kw").send_keys("selenium")
7.dr.find_element_by_id("su").click()
8.
9.dr.switch_to_default_content()#退出当前frame返回上一层
备注:
1.switch_to_frame()默认直接取表单的id或者name属性来切换
2.完成当前frame表单操作后,可以通过switch_to_default_content()方法返回上一层表单,即离的最近的switch_to_frame()方法
3.对于frame中没有id和name属性的通过下面方式进入frame(定位到frame以页面对象传入)
python代码:
1.
1.dr.get("D:
\\workspace\\pySelenium\\resources\\frame.htm")
2. #定位到frame页面元素
3. framepath=dr.find_element_by_class_name("frameClassname")
4. dr.switch_to_frame(framepath)#通过frame页面对象进入iframe
5.
6.#下面可以对frame进行操作了
7.dr.find_element_by_id("kw").send_keys("selenium")
8.dr.find_element_by_id
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python selenium 常用 语句