浏览器操作
浏览器设置最大化
driver.maximize_window()
设置浏览器显示大小
driver.set_window_size(1480, 800)
后退:driver.back()
前进:driver.forward()
效果演示:
driver.refresh()
简单的元素操作
最常用的几个方法:
获取元素的某些属性:
size: 返回元素的尺寸
text: 返回元素的文本
get_attribute(name): 获得属性值
is_displayed(): 获取该元素是否用户可见
is_enabled(): 判断元素是否可用
is_selected(): 判断元素是否被选中
模拟鼠标操作
由于现在web端页面提供了更丰富的鼠标交互方式,因此,在做UI自动化的过程中可能会用到鼠标的右击、双击、悬停、甚至是鼠标拖动等功能。这些在WebDriver 中都是支持的,基于鼠标的相关操作方法都封装在ActionChains类中。
以python为例,需要先导入对应的包:
from selenium.webdriver.common.action_chains import ActionChains
ActionChains类提供了鼠标操作的常用方法:
使用案例:
所有鼠标的操作,最后都要调用perform()方法进行最后的执行。
模拟键盘操作
之前介绍过,可以通过send_keys()方法用来模拟键盘输入,除此之外,还可以用它来输入键盘上的按键以及组合键。
使用前,需要先导入keys类
from selenium.webdriver.common.keys import Keys
send_keys()方法用来模拟键盘输入,常用的键盘操作:
send_keys()方法用来模拟键盘输入,常用的键盘操作:
设置元素等待
WebDriver提供了两种类型的等待:显示等待和隐式等待
显示等待:
显示等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。这个是针对特定元素设置的
具体用法:
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
timeout:最长超时时间,单位默认为秒
poll_frequency:检测的间隔时间,默认0.5秒
WebDriverWait()一般与until()或until_not()方法配合使用,常见用法:
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
expected_conditions类提供的预期条件判断的方法:
隐式等待:
隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,即整个页面的加载时间;
用法:driver.implicitly_wait(10),如果不设置默认为0
sleep休眠方法:
通过导入time模块的方法,强制固定时间的休眠,比如停留X秒之后再继续操作。用法:
import time
time.sleep(5) #停留5秒以后再继续操作
frame/iframe/window切换
1、有时候页面会经常遇到frame/iframe嵌套,WebDriver只能在一个页面上对元素识别与定位,这个时候需要切换到相应的frame/iframe里面。
用法:driver.switch_to_frame(element)
2、有时候点某个链接,会跳转到一个新的页签,这个时候需要切换到新打开的页签中才能继续操作。
用法:driver.switch_to_window(element)
alert、confirm以及prompt弹窗处理
处理JavaScript所生成的alert、confirm以及prompt弹窗用法如下:
使用driver.switch_to.alert方法定位到alert/confirm/prompt,然后使用text/accept/dismiss/send_keys等方法进行操作。
注意:在selenium2的版本中可能会出现教大家用driver.swicth_to_alert()方法去定位的,在selenium3中已经改为了driver.switch_to.alert
用法演示:
print(driver.switch_to.alert.text)
driver.switch_to.alert.accept()
注意:
driver.switch_to.alert.send_keys('hello world') #只对prompt有效
driver.switch_to.alert.accept() #确认
driver.switch_to.alert.dismiss() #取消