Selenium 使用手册

官文参考文档链接
环境 python2.7
Selenium 2.42.1

pip install selenium==2.42.1

Chrome 浏览器驱动,需翻墙下载,并且将驱动添加到PATH环境变量中

自动化测试脚本小案例

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")		#通过get()方法,可以向浏览器发送网址(URL)
driver.find_element_by_id("kw").send_keys("Selenium")  # 通过id="kw"定位到百度的输入框,并通过键盘输入方法 send_keys()向百度输入框输入 "selenium"搜索关键字
driver.find_element_by_id("su").click() # 通过 id="su"定位百度一下搜索按钮,并向搜索按钮发送单击事件 click() 
driver.quit()  # 退出并关闭窗口的每一个相关的驱动程序

在这里插入图片描述
在这里插入图片描述

元素定位

find_element_by_id()

通过标签的id属性来定位

driver.find_element_by_id("kw")
find_element_by_name()

通过标签的name属性来定位

driver.find_element_by_name("wd")
find_element_by_class_name()

通过标签的class属性来定位

driver.find_element_by_class_name("s_ipt")
find_element_by_tag_name()

通过标签名来定位

driver.find_element_by_tag_name("input")
find_element_by_link_text()

定位文本链接,即href 中的 url 地址
百度中的HTML
中文字符串前 加u 表示将其转换为Unicode,因为默认情况下中文可能出现乱码

<a href="http://news.baidu.com" target="_blank" class="mnav">新闻</a>
<a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a>
<a href="http://map.baidu.com" target="_blank" class="mnav">地图</a>
<a href="http://v.baidu.com" target="_blank" class="mnav">视频</a>
<a href="http://tieba.baidu.com" target="_blank" class="mnav">贴吧</a>
<a href="http://xueshu.baidu.com" target="_blank" class="mnav">学术</a>
driver.find_element_by_link_text(u"新闻").click()
find_element_by_partial_link_text()

partial link 是对 link 一种补充,使用于文本链接很长的时候

<a href="#" target="_blank" class="mnav">这是一个很长很长的文本链接说明</a>
driver.find_element_by_partial_link_text(u"这是一个很长")
driver.find_element_by_partial_link_text(u"链接说明")
find_element_by_xpath()

xpath 是一种XML文档中定位元素的语言

绝对路径定位

主要用标签名的层级关系来定位元素的绝对路径,如果一个层级下有多个相同的标签名,那么就按上下文顺序确定是第几个,div[2] 表示第二个div标签

find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input")
利用元素属性定位

// 表示当前页面某个目录下

find_element_by_xpath("//input[@id='kw']")
find_element_by_xpath("//input[@clsss='s_ipt']")
find_element_by_xpath("//*[@class='kw']")   # * 不指定标签名
#某些标签其父类能位置指定的使用例子
find_element_by_xpath("//form[@id='form']/span[2]/input")
使用逻辑运算符

使用逻辑运算符连接多个属性来区别其他属性

<input id="kw" class="su" name="ie">
<input id="kw" class="aa" name="ie">
<input id="bb" class="su" name="ie">
find_element_by_xpath("//input[@id='kw' and @class='su']/span/input") #定位上述第一个标签下的子类input标签
find_element_by_css_selector()

通过CSS来定位

控制浏览器

控制浏览器窗口大小

driver.set_window_size(400,800) # 宽,高, 浏览器宽400,高800

控制浏览器后退和前进

driver.back()
driver.forward()

简单的元素操作

clear() 清除文本,如果是一个文件输入框
send_keys("String") 在元素上模拟按键输入
click() 单击元素
submit() 用于提交表单,有时相当于回车
size 返回元素的尺寸
text 获取元素的文本
get_attribute('string') 获得属性值,比如 id,class,name …
is_displayed 设置该元素是否用户可见

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.youdao.com")
driver.find_element_by_id("translateContent").send_keys("translation")
print driver.find_element_by_id("translateContent").size
print driver.find_element_by_id("translateContent").get_attribute('name')
print driver.find_element_by_id("translateContent").get_attribute('type')
driver.find_element_by_id("translateContent").submit()

print driver.find_element_by_xpath("//*[@id='phrsListTab']/div/ul/li").text
print driver.find_element_by_xpath("//*[@id='phrsListTab']/div/ul/li").is_displayed()
{'width': 383, 'height': 14}
q
text
n. 翻译;译文;转化;调任
True

鼠标事件 ActionChains类提供

perform() 执行所有ActionChains中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("http:www.baidu.com")

#定位到要悬停的元素
above = driver.find_element_by_xpath("//*[@id='u1']/a[8]")
ActionChains(driver).move_to_element(above).perform()			#悬停
ActionChains(driver).context_click(above).perform()				#右击
ActionChains(driver).double_click(above).perform()				#双击

#鼠标拖动的源元素
element = driver.find_element_by_id("xxxx")
#鼠标释放的目标元素
target = driver.find_element_by_id("xxxxx"
ActionChains(driver).drag_and_drop(element,target).perform()

键盘事件

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)
send_keys(Keys.F1) 键盘F1
...
send_keys(Keys.F12) 键盘F12

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("seleniumm")           #输入内容
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)       # 删除键
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')      #全选 
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')      #剪切
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')      #粘贴
driver.find_element_by_id("kw").send_keys(Keys.SPACE)           #空格
driver.find_element_by_id("kw").send_keys(u"教程")
driver.find_element_by_id("kw").send_keys(Keys.ENTER)

获取验证信息

title 用于获取当前页面的标题
current_url 用于获取当前页面的URL

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http:www.baidu.com")
print driver.title
print driver.current_url
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值