#coding=UTF-8 from selenium import webdriver import time from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox() driver.get(r"http://www.baidu.com/") # 对定位到的元素进行悬停操作(百度首页用link定位到的设置位置不对) # attrible = driver.find_element_by_link_text("设置") elem = driver.find_element_by_id('u1') attrible = elem.find_element_by_class_name('pf') ActionChains(driver).move_to_element(attrible).perform() print(attrible) time.sleep(10) attrible = driver.find_element_by_class_name('setpref') ActionChains(driver).click(attrible).perform() print(attrible) time.sleep(10) driver.refresh() driver.close()
以百度首页的设置为例:
定位到设置元素的位置,使用
move_to_element
此时在定位setpref元素就不会报错说找不到了。
注意这里的点击需要也使用ActionChains的click方法。
能不能直接在find后加click()主要看元素属性。
鼠标的常用方法总结:
click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素