selenium webdriver基于Python系列文章
常用的有以下几种
id
name
class
name
tag
name
link
text
partial link text
xpath
css selector
分别对应 python webdriver 中的方法为:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
id\name \ class name \ tag name :
百度搜索框前端代码(通过firebug查看)
<input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
find_element_by_id(‘kw1’)
find_element_by_name(‘wd’)
find_element_by_class_name(‘s_ipt’)
find_element_by_tag_name(‘input’)
注:页面上的元素tag name 相同的几率很高
link\partial link : 百度首页文字链接:
<a href="http://news.baidu.com" name="tj_news">新 闻</a>
<a href="http://tieba.baidu.com" name="tj_tieba">贴 吧</a>
<a href="http://zhidao.baidu.com" name="tj_zhidao">知 道</a>
find_element_by_link_text(u‘新 闻’)
find_element_by_partial_link_text(‘新’)
find_element_by_link_text(u‘贴 吧’)
注:中文字符串加u 是将中文转换成unicode,防止编码问题。
find_element_by_xpath(‘//input[@name='wd']’) find_element_by_xpath(‘//input[@class='s_ipt']’)
find_element_by_xpath(‘//span[@class='bg s_iptwr']/input’)
find_element_by_xpath(‘//form[@id='form1']/span/input’)
find_element_by_xpath(‘/html/body/div/div[4]/div[2]/div/form/span/input’)
css常见语法
css
</form>
<div class="subdiv">
<ul id="recordlist">
<p>Heading</p>
定位</from>
find_element_by_css_selector(‘from’)
定位
<div class="subdiv"> find_element_by_css_selector(‘.subdiv’)
find_element_by_css_selector(‘from+div’)
定位
<ul id="recordlist"> find_element_by_css_selector(‘#recordlist’)
find_element_by_css_selector(‘ul#recordlist’) find_element_by_css_selector(‘div>ul’)
定位
<p>Heading</p> find_element_by_css_selector(‘div>ul’) find_element_by_css_selector(‘div.subdiv > ul > p’)
webdriver API
浏览器最大化:
maximize_window()
设置浏览器宽、高:
set_window_size(480, 800)
控制浏览器后退,前进:
back() forward()
浏览器最大化
driver.maximize_window() #将浏览器最大化显示
浏览器设置宽高
driver.set_window_size(800, 600)
控制浏览器前进、后退
driver.get('http://www.baidu.com') #访问百度首页
driver.get(‘http://news.baidu.com’) #访问新闻页面
driver.back() #返回(后退)到百度首页
driver.forward() #前进到新闻页
WebElement接口常用方法:
clear 清除元素的内容
send_keys 在元素上模拟按键输入 (这里需要注意的是,我们一般会在脚本开始声明代码的编码格式为utf-8,所以当我们使用中文字符串操作时,应在字符串前面加小u,进行转码标识. send_keys(u“中文内容”)
click 单击元素,单击任何可以点击的元素,文字/图片连接,按钮, 下拉按钮等。
submit 提交表单,提交对象是一个表单
size 返回元素的尺寸
text 获取元素的文本
get_attribute(name) 获得属性值
is_displayed() 设置该元素是否用户可见
driver.find_element_by_id(“username").clear()
driver.find_element_by_id(" username ").send_keys("username")
driver.find_element_by_id(“password").clear()
driver.find_element_by_id(" password ").send_keys("password")
driver.find_element_by_id("loginBtn").click() #通过 submit() 来提交表单
#driver.find_element_by_id("loginBtn").submit()
ActionChains 类鼠标操作的常用方法:
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上
ActionChains 类鼠标操作的常用方法:
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 类鼠标操作的常用方法:
drag_and_drop() 拖动
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains ...
#定位元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")
#执行元素的移动操作 ActionChains(driver).drag_and_drop(element,target).perform()
ActionChains 类鼠标操作的常用方法:
move_to_element() 鼠标悬停
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains ...
#定位元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("xxx")
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element,target).perform()
Keys 类键盘操作的常用方法:
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)
ctionChains 类鼠标操作的常用方法:
move_to_element() 鼠标悬停
#输入框输入内容 driver.find_element_by_id("kw1").send_keys("seleniumm")
time.sleep(3)
#删除多输入的一个m driver.find_element_by_id("kw1").send_keys(Keys.BACK_SPACE)
time.sleep(3)
打印信息(断言的信息):
title 返回当前页面的标题
current_url 获取当前加载页面的URL
text 获取元素的文本信息
打印信息(126邮箱):
#获得前面title,打印
title = driver.title
print title
#获得前面URL,打印
now_url = driver.current_url
print now_url
#获得登录成功的用户,打印
now_user=driver.find_element_by_id("spnUid").text
print now_user
脚本中的等待时间:
sleep(): python提供设置固定休眠时间的方法。
implicitly_wait(): 是webdirver 提供的一个超时等待。
WebDriverWait(): 同样也是webdirver 提供的方法。
time.sleep(2)