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秒,时间间隔越小,移动越顺滑.