一、WebDriver常用方法
1.1 点击和输入
定位到元素之后,需要对元素进行操作,下面是WebDriver中一些最常用的方法
- clear():清除文本
- send_keys(value):模拟按键输入
- click():单击元素
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("chinaltx")
driver.find_element_by_id("su").click()
1.2 提交
- submit():用于表单提交
#-*-coding:utf-8-*-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#提交
search_text = driver.find_element_by_id("kw")
search_text.send_keys("chinaltx")
search_text.submit()
1.3 其他常用属性
- size:返回元素的尺寸
- text:获取元素的文本
- get_attribute(name):获取属性值
- is_displayed():返回该元素的display状态
#-*-coding:utf-8-*-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#其他常用方法
#获取输入框的尺寸
size = driver.find_element_by_id("kw").size
print size
#返回百度页面底部备案信息
text = driver.find_element_by_id("cp").text
print text
#返回元素的属性值,可以返回id、name、type等属性
id = driver.find_element_by_id("kw").get_attribute("id")
name = driver.find_element_by_id("kw").get_attribute("name")
type = driver.find_element_by_id("kw").get_attribute("type")
print id,name,type
#返回该元素的display状态
ifdisplay = driver.find_element_by_id("kw").is_displayed()
print ifdisplay
结果:
{'width': 500, 'height': 22}
©2019 Baidu 使用百度前必读 意见反馈 京ICP证030173号 京公网安备11000002000001号
kw wd text
True
二、鼠标事件
WebDriver中所有关于鼠标操作的方法都封装在ActionChains类中
- perform():执行所有ActionChains中存储的行为
- context_click():模拟右击
- double_click():模拟双击
- drag_and_drop():模拟拖动
- move_to_element():模拟悬停
#-*-coding:utf-8-*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")
#测试move_to_element
above = driver.find_element_by_link_text("更多产品")
ActionChains(driver).move_to_element(above).perform()
#测试double_click()/click()
search_text = driver.find_element_by_id("kw")
search_text.send_keys("chinaltx")
submit = driver.find_element_by_id("su")
ActionChains(driver).move_to_element(submit).click().perform()
#测试drag_and_drop()
driver.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
driver.switch_to_frame("iframeResult")
source = driver.find_element_by_id("draggable")
target = driver.find_element_by_id("droppable")
ActionChains(driver).drag_and_drop(source,target).perform()
三、键盘事件
- 我们可以用send_keys()来模拟按键输入
- 我们还可以模拟组合键
- 模拟键盘输入的类在common模块的keys类中
#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("chinaltxx")
# 删除多输入的一个 x
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# 输入空格键+“ 博客”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("博客".decode("utf-8","ignore"))
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
# 通过回车键来代替单击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
driver.quit()