selenium元素定位

WEB元素定位

一、浏览器的操作

from selenium import Webdriver //从selenium库导入Webdriver包

browser = Webdriver.Chrome(***\chromedriver.exe) //打开谷歌浏览驱动

browser.get("http://www.baidu.com") //向浏览器发送网址

browser.maximize_window() //浏览器最大化

from time import sleep //从time模块中导入sleep函数

sleep(2) //睡眠2秒

browser.quit() //关闭浏览器对象

browser.set_window_size(480, 800) //设置浏览器宽480,高800

browser.back() //浏览器后退

browser.forward() //浏览器前进

 

二、简单的对象定位
网页元素:包括文本框、静态文字、图片、音频、动画、视频,也就是网页中各种控件
元素的八大定位方法
find_element_by_id() //根据元素的id定位,具有唯一性,较为准确
find_element_by_name() //根据元素的name定位,具有唯一性,较为准确
find_element_by_class_name() //根据元素的class_name定位,不准确,存在重复性太多
find_element_by_tag_name() //根据tag_name定位,不准确
find_element_by_link_text() //根据链接的文本定位,较为准确
find_element_by_partial_link_text() //根据部分链接文本定位,文本太长时采用
find_element_by_xpath() //绝对路径定位,优点是定位较为准确,缺点是目录层级太多时,很长,层级容易发生变化,不够健壮
find_element_by_css_selector()

 

三、常用的元素操作
clear() 清除元素的输入内容
例如:browser.find_element_by_id("kw").clear()

send_keys() 在元素上模拟按键输入
例如:browser.find_element_by_id("kw").send_keys(u"百度")

click() 单击元素
例如:browser.find_element_by_id("su").click()

submit() 提交表单,作用同click
例如:browser.find_element_by_id("kw").submit()

 

WebElement接口常用方法
size返回元素尺寸,使用时无括号
例如:r_size=browser.find_element_by_id("kw").size

text()返回元素文本,使用时无括号
例如:r_text=browser.find_element_by_id("cp").text

get_attribute() 获取该元素任意属性的内容
例如:r_attribute=browser.find_element_by_id("kw").get_attribute("class")

 

四、鼠标事件
1、context_click() //右击
例如:from selenium.webdriver.common.action_chains import ActionChains //导入ActionChains函数
ActionChains(driver).context_click(element_id).perform() //右击事件,ActionChains用于生成用户的行为;所有的行为都存储在 actionchains 对象。
通过 perform()执行存储的行为。context_click(right_element) 右击操作,括号内的参数是元素的位置。
perfrome()同样也是 ActionChains 类提供的的方法,通常与ActionChains()配合使用
double_click() //双击 drag_and_drop() //拖动 move_to_element() //鼠标悬停在一个元素上 click_and_hold() 按下鼠标左键在一个元素上。这四个操作方法都是一样。

2、键盘操作
使用键盘操作,要导入Keys类包
经常用到的键盘操作有:
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.TAB) 制表键
send_keys(Keys.ESCAPE) 回退键ESC
send_keys(Keys.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.find_element_by_id("u1").find_element_by_link_text(u"新闻").click()

 

六、定位frame中的元素
在 web 应用中经常会出现 frame 嵌套的应用,假设页面上有 A、B 两个 frame,其中 B 在 A 内,那么定位B中的内容则需要先到A,然后再到B
例如:browser.switch_to.frame(id)
browser.switch_to.frame(name)

 

七、浏览器多个窗口的处理
current_window_handle //获得当前句柄
window_handles //获得所有的句柄
switch_to_window() //用于处理多个窗口的操作方法,与swith_to_frame()是类似,switch_to_window()用于处理多个窗口切换,swith_to_frame()是处理多框架的切换

句柄:是系统分配给窗口唯一标识,跟身份证一样,用这个句柄(一个长整型long),可以找到这个窗口

driver = webdriver.Chrome(r'F:\tools\chromedriver.exe')
driver.get('http://www.baidu.com')
#获取百度的句柄
first_handle = driver.current_window_handle
print first_handle
driver.find_element_by_link_text(u'登录').click()
sleep(3)
driver.find_element_by_link_text(u'立即注册').click()
sleep(3)
#获取所有的句柄
all_handles = driver.window_handles
#遍历所有的句柄
for handle in all_handles:
if handle != first_handle:
second_handle = handle
#跳转到注册窗口
driver.switch_to_window(second_handle)
print driver.title
driver.find_element_by_name('userName').send_keys('chencghu')
sleep(3)
driver.close()

 

八.alert弹框处理
alert=browser.switch_to_alert() #切换到弹框界面
alert.accept() #接受警告信息
print alert.text() #得到文本信息并打印
alert.dismiss() #取消对话框(如果有的话)
alert.send_keys() #输入值(如果有的话)

 

转载于:https://www.cnblogs.com/chuchu5811/p/10942333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值