web自动化测试的Selenium高级使用(二)

一、鼠标和键盘操作   

手动测试时键盘的操作在selenium页有实现,关于鼠标的操作由ActionChains()类来提供,关于键盘的操作由Key()类来提供   

 1、鼠标操作       

 * 导入动作链类,动作链可以储存鼠标的动作,并一起执行       

 from selenium.webdriver import ActionChains       

 ActionChains(driver)                    

 * 鼠标右击           

 el = driver.find_element_by_xxx(value)             

context_click(el)             对el执行右击       

 * 执行ActionChains中储存的所有动作             

perform()

例如:ActionChains(driver).context_click(ele).perform()         点击鼠标右键                

 ActionChains(driver). double_click(ele).perform()         点击鼠标左键            

ActionChains(driver).move_to_element(el).perform() 鼠标悬停

案例:

from selenium import webdriver
from selenium.webdriver import ActionChains
drive=webdriver.Firefox()
url="https://www.baidu.com/"
drive.get(url)
# 获取更多
gd=drive.find_element_by_css_selector(".s-bri")
# 鼠标左击
ActionChains(drive).double_click(gd).perform()
# 鼠标右击
# ActionChains(drive).context_click(gd).perform()

结果:

2、键盘操作       

 键盘操作使用的是Keys类,一般配合send_keys使用         

* 导入         from selenium.webdriver.common.keys import 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,‘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
drive = webdriver.Firefox()
url="http://www.baidu.com"
drive.get(url)
# 百度输入框
db = drive.find_element_by_id("kw")
db.send_keys("123")

db.send_keys(Keys.BACK_SPACE)   # 删除键
# db.send_keys(Keys.SPACE)     # 空格键
# db.send_keys(Keys.TAB)    # 制表键
# db.send_keys(Keys.ESCAPE)  # 回退键
# db.send_keys(Keys.ENTER)   # 回车键
# db.send_keys(Keys.CONTROL,"a")  # 全选
# db.send_keys(Keys.CONTROL,"x")  # 剪切
# db.send_keys(Keys.CONTROL,"v")  # 粘贴
# db.send_keys(Keys.F1)  # 键盘F1
# db.send_keys(Keys.F12)  # 键盘F12

二、下拉框的使用

from selenium import webdriver
import time
driver=webdriver.Firefox()
url="https://www.baidu.com/"
driver.get(url)
# 获取设置
sz=driver.find_element_by_id("s-usersetting-top")
sz.click()
# 获取高级设置
gs=driver.find_element_by_css_selector(".s-user-setting-pfmenu > a:nth-child(2)")
gs.click()
time.sleep(3)
# 获取全部时间
sj=driver.find_element_by_class_name("c-select-selected-value")
sj.click()
# 获取准确时间
zs=driver.find_elements_by_class_name("c-select-item")
zs[3].click()
# 获取高级设置按钮
bd=driver.find_element_by_class_name("advanced-search-btn")
# bd=driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div/div/div[2]/div/form/ul/li[6]/div/input")
bd.click()

结果:

 

三、浏览器等待

1、为什么要进行等待?                

 1).网速慢         

2).网站内容过多         

3).如果不进行等待而直接定位元素,可能会抛出异常     

2、selenium中等待的分类:                  显示等待                  隐式等待

3、显示等待         

显示等待是根据条件进行等待,等待条件出现                

 实现:             from selenium.webdriver.common.by import By           

 from selenium.webdriver.support.ui import WebDriverWait           

from selenium.webdriver.support import expected_conditions as EC         

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)                                                       

  WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。                  WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located( (By.CLASS_NAME,"g-hu")))

4、隐式等待       

 隐式等待是根据是件进行等待,等待特定时间             

driver.implicitly_wait(n)       

 n的单位为秒,n为最大值,在这个最大值内只要该界面上的全部元素都加载完成定就结束没有加载出元素就抛出 NosuchException.

案例:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
drive = webdriver.Firefox()
url="http://www.baidu.com"
drive.get(url)
ele = drive.find_element_by_id("kw")
ele.send_keys("python")
# 隐式等待
drive.implicitly_wait(20)
ele_btn = drive.find_element_by_id("su")
ele_btn.click()
# # 固定等待
# time.sleep(23)
# ele_btn = driver.find_element_by_id("su")
# ele_btn.click()


#显示等待
# WebDriverWait(drive,20,0.5).until(EC.presence_of_element_located((By.ID,"su")))
# ele_btn = drive.find_element_by_id("su")
# ele_btn.click()

 

5、等待优先级:优先 隐式等待     次之 显式等待 最次 固定等待

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值