1.代码实现
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import UnexpectedAlertPresentException
from time import sleep
driver= webdriver.Ie()
driver.get('https://www.helloweba.net/demo/2017/unlock/')
driver.implicitly_wait(5)
dragger = driver.find_elements_by_class_name('slide-to-unlock-handle')[0] #错误为:find_element_by_class_name
action = ActionChains(driver)
action.click_and_hold(dragger).perform() #鼠标左键按住不放
for index in range(200):
try:
action.move_by_offset(2,0).perform() #平行移动鼠标
except UnexpectedAlertPresentException:
break
action.reset_actions()
sleep(0.1) #等待停顿时间
sucess_text = driver.switch_to.alert.text
print(sucess_text) #打印警告框提示
sleep(5)
driver.quit()
2.易错点:find_elements_by_class_name才是正确,当输入为find_element_by_class_name时,运行则报错:TypeError: 'WebElement' object does not support indexing
3.代码解释
(1)driver.find_elements_by_class_name("slide-to-unlock-handle")[0]==先通过class属性找到所有的里面的第一个
(2)click_and_hold() ==对滑块按下鼠标左键
(3)move_by_offset() ==通过for循环动滑块的位置,move_by_offset()方法第一个参数是X轴,第二个参数是Y轴,单位为像素。因为是平行移动,所以Y设置为0。 X每次移动两2个像素。每次循环休眠0.1秒,时间间隔越小,移动越顺滑.