Selenium之 webdriver的使用
1、通过id定位
find_element_by_id()
#通过id定位
self.driver.find_element_by_id("hl").click()
2、通过name定位
find_element_by_name()
#通过name定位
self.driver.find_element_by_name("panel").click()
3、通过class定位
find_element_by_class_name()
#通过class定位
self.driver.find_element_by_ class_name("panel panel-default").click()
4、通过tag定位
find_element_by_tag_name()
#通过tag定位
self.driver.find_element_by_ tag_name("input").click()
5、通过link定位
find_element_by_link_text()
#link定位
self.driver.find_element_by_link_text("新闻").click()
6、通过XPath定位
find_element_by_xpath()
其中包括绝对路径定位、元素属性定位、层级与属性结合定位、逻辑运算符定位
#绝对路径定位
self.driver.find_element_by_xpath("/div/div[2]/div/div/div[2]/div").clear()
#元素属性定位
self.assertEqual(self.driver.find_element_by_xpath("//div[@class='modal-content']//div[@class='modal-header']//div[@class='bootstrap-dialog-header']//div[@class='bootstrap-dialog-title']").text,u"插入链接")
#层级与属性结合定位
self.driver.find_element_by_xpath("//div[@class='editor-tool-bar']/div[2]/button").send_keys('C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg')
#逻辑运算符定位
self.driver.find_element_by_xpath("//div[@class='form-group' and @id=’form’]//input[@id='ILD_linkText']").send_keys(u"贵金属主站")
7、通过CSS定位(略)
8、通过By定位(略)
1、控制浏览器操作
#控制浏览器的大小
self.driver.set_window_size(480,800)
#控制浏览器返回
self.driver.back()
#控制浏览器前进到下个页面
self.driver.forward()
#刷新当前页面
self.driver.refresh()
2、控制页面元素的简单操作
#清除文本操作
self.driver.find_element_by_xpath("/div/div[2]/div/div/div").clear()
#模拟键盘输入值
self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(“urstest@163.com”)
#点击元素
self.driver.find_element_by_xpath("/div/div[2]/div/div/div").click()
#提交表单
self.driver.find_element_by_xpath("/div/div[2]/div/div/div").submit()
#返回输入框尺寸
size=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").size
print(size)
#返回文本内容
text=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").text
print(text)
#返回元素的属性值
attribute1=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘id’)
print(attribute1)
attribute3=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").get_attribute(‘type’)
print(attribute3)
#返回元素的结果是否可见,返回结果是True或是False
result=self.driver.find_element_by_xpath("/div/div[2]/div/div/div").is_displayed()
print(result)
#返回页面标题
title=self.driver.title
print(title)
#返回页面url
url=self.driver.current_url
print(url)
#上传文件,上传文件相当于给元素传值,可以用send_keys()函数
self.driver.find_element_by_xpath("/div/div[2]/div/div/div").send_keys(‘D:\\upload_file.txt’)
3、鼠标操作
首先要导入鼠标操作的Actionchains类
#引入Actionchains类
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
然后就可以用下面的这些函数进行鼠标的操作了
#左键用上面讲到的click()函数就可以了
#右键
right_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
ActionChains(driver).context_click(right_click).perform()
#双击
double_click= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
ActionChains(driver).double_click(double_click).perform()
#拖拽
#拖拽的原位置
element= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
#拖拽的目标位置
target= self.driver.find_element_by_xpath("/div/div[2]/div/div/div[2]")
#执行拖拽
ActionChains(driver).drag_and_drop(element,target).perform()
4、键盘操作
首先要导入键盘操作的Keys类
#引入Keys类
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
然后就可以用下面的这些函数进行键盘的操作了
#输入内容:用之前的send_keys()函数即可
#回删内容
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text.send_keys(Keys.BACK_SPACE)
#输入空格及内容
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text2=text.send_keys(Keys.SPACE)
text2.send_keys(u“就是啊”)
#全选内容ctrl+a
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text.send_keys(Keys.CONTROL,’a’)
#剪切内容ctrl+x
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text.send_keys(Keys.CONTROL,’x’)
#粘贴内容ctrl+v
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text.send_keys(Keys.CONTROL,’v’)
#回车
text= self.driver.find_element_by_xpath("/div/div[2]/div/div/div")
text.send_keys(Keys.ENTER)
5、元素等待操作
①显示等待
原理:显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.(简而言之:就是直到元素出现才去操作,如果超时则报异常)
②隐式等待
原理:隐式等待,就是在创建driver时,为浏览器对象设置一个等待时间。这个方法是得不到某个元素就等待一段时间,直到拿到某个元素为止。
注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内不断的刷新页面去寻找我们需要的元素
③休眠方法sleep
需要导入sleep类
#引入sleep类
from selenium import webdriver
from time import sleep
time.sleep(3)
6、处理验证码(验证码是阻碍自动化测试的部分,所以要想办法绕开这个环节)
①注释掉验证码部分的代码
②设置一个万能验证码
③验证码的识别技术
④记录cookie,来跳过登录的部分