Webdriver中比较常用的操作元素的方法:
clear() 清除输入框的默认内容
send_keys("xxx") 在一个输入框里输入xx内容
——如果输入中文,则需要在脚本开头声明编码为utf-8,然后在中文字符前面加u(如:send_keys(u"中文内容"))
click() 点击一个按钮
submit() 提交表单
WebElement接口常用方法:
size 返回元素的尺寸
——如:size = driver.find_element_by_id("id").size
text 获取元素的文本
——如:text = driver.find_element_by_id("id").text
get_attribute(name) 获得属性值
——如:attribute = driver.find_element_by_id("id").get_attribute(‘type‘)
is_displayed() 设置该元素是否用户可见
——如:isshow = driver.find_element_by_id("id").is_displayed()
ActionChains类鼠标操作的常用方法:
引入ActionChains类:from selenium.webdriver.common.action_chains import ActionChains
context_click() 右击
——如:RightClick = driver.find_element_by_id("id")
ActionChains(driver).context_click(RightClick).perform()
double_click() 双击
——如:DoubleClick = driver.find_element_by_name("name")
ActionChains(driver).double_click(DoubleClick).perform()
drag_and_drop(source, target) 鼠标拖放
——source:鼠标按下的源元素;target:鼠标释放的目标元素
——如:element = driver.find_element_by_name("name")
target = driver.find_element_by_name("name")
ActionChains(driver).drag_and_drop(element, target).perform()
move_to_element() 鼠标悬停在一个元素上
——如:above = driver.find_element_by_xpath("xpath路径")
ActionChains(driver).move_to_element(above).perform()
click_and_hold() 按下鼠标左键在一个元素上
——如:left = driver.find_element_by_name("name")
ActionChains(driver).click_and_hold(left).perform()
键盘事件:
引入Keys类包:from selenium.webdriver.common.keys import Keys
send_keys() 输入框输入内容
——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.BACK_SPACE) 向左删除一个字符 ——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.SPACE) 输入空格
——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)
send_keys(Keys.CONTROL,‘a‘) ctrl+a 全选输入框的内容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a‘)
send_keys(Keys.CONTROL,‘x‘) ctrl+x 剪切输入框的内容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)
send_keys(Keys.CONTROL,‘v‘) ctrl+v 粘贴到输入框
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)
send_keys(Keys.ENTER) 回车代替点击
——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)
send_keys(Keys.TAB) 制表键(Tab)
——如:driver.find_element_by_id("id").send_keys(Keys.TAB)
send_keys(Keys.ESCAPE) 回退键(Esc)
——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)
send_keys(Keys.CONTROL,‘c‘) 复制
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)
打印信息
#获得title并打印
title = driver.title
print title
#拿当前title名称进行预期比较
if title == u"百度一下,你就知道":
print "title yes!"
else:
print "title no!"
#获得当前URL并打印
url = driver.current_url
print url
等待时间
#导入 WebDriverWait 包
from selenium.webdriver.support.ui import WebDriverWait
#导入 time 包
import time
sleep() 设置固定等待时间
——如:time.sleep(5) #等待5秒
implicitly_wait() 等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常
——如:driver.implicitly_wait(30)
driver.find_element_by_id("id").click()
WebDriverWait() 在设置时间内,默认每隔一段时间检测检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
——driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
——timeout:最长超时时间,默认以秒为单位
——poll_frequency:休眠时间的间隔(步长)时间,默认为 0.5 秒
——ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常
——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))
element.send_keys("selenium")
——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“Id”))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())
WebDriverWai()一般由 unit()或 until_not()方法配合使用:
——until(method, message=’’)
调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。
——until_not(method, message=’’)
调用该方法提供的驱动程序作为一个参数,直到返回值为 False。
定位一组对象
#选择当前页面上所有tag name为input的元素
inputs = driver.find_elements_by_tag_name(‘input‘)
#从中过滤出type为checkbox的元素,并勾选上
for input in inputs:
if input.get_attribute(‘type‘) == ‘checkbox‘:
input.click()
#使用CSS定位选择所有type为checkbox的元素,并勾选上
checkboxes = driver.find_elements_by_css_selector(‘input[type=checkbox]‘)
for checkbox in checkboxes:
checkbox.click()
#把最后一个checkbox的勾去掉 pop()为空则是最后一个
driver.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click()
Selenium2+python 常用函数汇总:
1. driver = webdriver.Chrome() --新建实例
2.driver.find_element_by_id("username") ---通过标签属性id查找元素
3.driver.find_element_by_name("inputpwname")---通过标签属性name查找元素
4.driver.find_element_by_xpath("//div[@id='menucontainer']/div/div/ul/li[4]/a") ---通过标签xpath路径查找元素
5.driver.find_element_by_tag_name("input") --通过标签名tagname查找元素
注意:通过tag_name查找时使用find_element_by_tag_name查找到的是第一个标签的tag_name
6.driver.find_element_by_link_text('登录') ---通过标签中的元素文本链接查找元素
7.driver.find_element_by_class_name("bg_link") ---通过标签的class属性查找元素
8.driver.find_element_by_css_selector("input.btn")
注意:find_elements_by_id()查询到的是一个集合,如果id名字重复的时候可以采取find_elements_by_id(),其他的查询方式同理;
9.driver.get("http//:www.baidu.com") ---浏览器加载url
10.driver.forward --网页向前返回
11.driver.get_cookies() ---返回当前会话中的cookies
12.driver.get_cookie("hello")---根据cookie name查找
13.driver.get_screenshot_as_file("D:\\Application\myfiles\shot1.bmp") ---截取当前页面
14.driver.get_window_position() --获取当前窗口的坐标
15.driver.get_window_size() ---获取当前窗口的长和宽
16.driver.current_url ---获取当前页面的url
17.driver.find_element_by_xpath("//*[@id='tablechart']/tbody/tr[14]/td[9]").location---获取元素坐标
18.driver.find_element_by_id("form1").submit() ----先找到要获取的元素然后调用submit
19.driver.find_element_by_id("forml").get_attribute("forml") ---获取元素的属性值
20.driver.find_element_by_id("form1").is_selected() ----判断元素是否被选中
21.driver.find_element_by_id("iptPassword").size ---返回元素的大小
22.driver.find_element_by_id("iptPassword").is_displayed() --判断元素是否显示
23.driver.find_element_by_id("iptPassword").is_enabled() ----判断元素是否被使用
24.driver.find_element_by_id("iptUsername").text --获取元素的文本值
25.driver.find_element_by_id("iptUsername").send_keys('admin') --元素赋值
driver.find_element_by_id("iptUsername").send_keys(u'管理员') --如果是中文字符,要加转义字符u
26.driver.find_element_by_id("iptUsername").tag_name ---返回元素的tagname
27.driver.delete_all_cookies() ---删除浏览器所有的cookies
28.driver.delete_cookie("my_cookie_name")----删除指定cookies
29.driver.close() ---关闭浏览器
30.driver.quit()----关闭浏览器并且退出驱动程序
31.driver.implicitly_wait(30) ---设置等待超时
32.driver.maximize_window() ---浏览器窗口最大化
driver.set_window_size(1024,768) 修改浏览器窗口大小
33.driver.name ---查看浏览器的名字