当我们单击滑块时,改变的只是CSS样式,HTML代码段如下。
<div class="slide-to-unlock-progress" style=" height: 36px; 0px; "></div>
<div class-"slide-to-unlock-handle" style=" height: 38px; line-height: 38px; 37px; left:Opx;"></div>
slide-to-unlock-handle表示滑块。在滑动过程中,滑块的左边距会逐渐变大,因为它在向右移动。
slide-to-unlock-progress表示滑过之后的背景色,背景色的区域会逐渐增加,因为滑块在向右移动。
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.common.exceptions imnort InevnectedAlertPresentException
driver = webdriver.Chrome()
driver.get("https://www .helloweba.com/demo/2017/unlock/")
#定位滑动块
slider = driver.find_elements_by_class name ("slide-to-unlock-handle")[0]action = ActionChains(driver)
action.click_and_hold(slider) .perform()
for index in range(200):
try:
action.move_by_offset (2,0) .perform()except UnexpectedAlertPresentException:
break
action.reset_actions()
sleep(0.1)#等待停顿时间
#打印警告框提示
success text =driver.switch_to.alert.textprint (success_text)
在这个脚本中,用到下面几个方法。
click_and_ hold():单击并按下鼠标左键,在鼠标事件中介绍过。
move by offset():移动鼠标,第一个参数为r必标跖哀,第一个参数为v坐标距离。
reset actionO):重置action。执行完成,滑动效果如图4-12所示。
参考前面的操作,通过ActionChains类可以实现上下滑动选择日另外一种方法,即通过TouchActions类实现上下滑动选择日期。
from time import sleep
from selenium import webdriver
driver - webdriver.Chrome(
iriver.get ("http://www-jq22.com/yanshi4976")leep (2)
river.switch_to.frame("iframe")
driver.find_element by_ id("appDate").click()
定位要滑动的年、月、日
dwnwos= driver.find_ elements by_class_name ("dwwo")year = dwwos[0]
month = dwwos[1]day = dwwos[2]
action - webdriver.TouchActions(driver)
action.scroll_from_element(year,0,5) .perform()
action.seroll_from_element(month, 0,30).perform()
action.scroll_from element (day,0,30).perform()
#……
这里使用 TouchActions类中的scroll from element()方法滑动元素,参数如下。
on_element:滑动的元素。
xoffset: x坐标距离。
yoffset:y坐标距离。
====窗口截图===
自动化测试用例是由程序劫行的因出右时位打印的进涅信息不够直观。如果在脚本执行出错时能够对当前窗口进行#见*但方 那过叹并可I以非常直观地看到脚本出错的原因。WebDriver提做了截图亟数cave sorooenchat可田来截取当前窗口。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www .baidu.com')
手截取当前窗口,指定截图图片的保存位置
driver.save_screenshot("./files/baidu_img.png")
WebDriver 建议使用 png作为图片的后缀名。脚本运行完成后,会在当前files/目录中生成baidu_img.png图片。