Selenium操作测试对象

常用元素操作API

定位到元素后,需要对元素进行操作。一般来说,所有与页面交互的操作都将通过WebElement接口。

webdriver中常用的操作元素的方法有如下几个:

from selenium.webdriver.common.by import By
from selenium import webdriver

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

#send_keys():在对象上模拟按键输入
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("海贼王")

#clear():清除对象的内容
driver.find_element(By.CSS_SELECTOR,"#kw").clear()

#click():单击对象,强调对象的独立性
driver.find_element(By.NAME,"tj_trnews").click()

#submit():提交表单,要求对象必须是表单
driver.find_element(By.ID,'form').submit()

#is_displayed():用来判断对象是否可见,即css的display属性是否为none
driver.find_element(By.CSS_SELECTOR,"#id").is_displayed()

#is_enabled():判断对象是否被禁用
driver.find_element(By.CSS_SELECTOR,"#id").is_enabled()

#is_selected()判断对象是否被选中
driver.find_element(By.CSS_SELECTOR,"#id").is_selected()

#get_attribute("属性名"):获取对象的属性值
driver.find_element(By.CSS_SELECTOR,"#id").get_attribute("name")

#size:返回对象的尺寸
print(driver.find_element(By.ID,"kw").size)

#text:获取对象的文本
print(driver.find_element(By.NAME,"tj_trnews").text)

#tag_name:获取对象便签名称
print(driver.find_element(By.ID,"kw").tag_name)

#location:获取元素坐标
print(driver.find_element(By.ID,"kw").location)

鼠标事件

这些操作包含在ActionChains类中。

ActionChains类中鼠标操作常用方法:

  • context_click():右击
  • double_click():双击
  • drag_and_drop():拖动
  • move_to_element():鼠标移动到一个元素上
  • click_and_hold():按下鼠标左键在一个元素上

举例:

ele=driver.find_element(By.NAME,"tj_trnews")
kw=driver.find_element(By.ID,"kw")

#左键单击,以及单击拆解
ActionChains(driver).click(ele).perform()
ActionChains(driver).click_and_hold(ele).release(ele).perform()

#左键双击
ActionChains(driver).double_click(ele).perform()

#右键单击
ActionChains(driver).context_click(kw).perform()

键盘事件

keys()类提供键盘上所有按键操作,还可以模拟组合键。

from selenium.webdriver.common.action_chains import ActionChains
#组合键操作:ctrl+c
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()

等待操作

为了保证脚本的稳定性,有时候需要引入等待时间,等待页面加载元素后再进行操作,selenium提供三种等待时间设置方式。

1、sleep():固定休眠时间设置,python的time包里提供了休眠方式sleep,导入包后就能使用
sleep()方法以秒为单位,如果超时设置小于1秒,可以使用小数

import time
time.sleep(0.5)

其实,这个函数的真正用途不是给我们看脚本的运行过程的,有时候网络原因,或页面加载慢。假设搜索框输入了selenium,搜索按钮还没加载出来,,那么脚本就报错。
在适当位置加入time.sleep()有助于减少网络原因造成的脚本执行失败。

2、implicitlyWait():比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待,称为隐式等待

driver.implicitly_Wait(100)

备注:设置等待时间100s,页面上的元素5s后出现,只等待5s。不会等待100秒

3、WebDriverWait():显示等待
语法格式如下:

WebDriverWait(driver.timeout,poll_frequency=0.5,ignore_exceptioins=None)

timeout:最长超时时间,默认以秒为单位
poll_frequency:休眠时间的间隔(步长)时间,默认为0.5秒(即每500毫秒扫描一次页面)
ignore_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常

原文地址:https://www.cnblogs.com/TD1900/p/11941944.html