click() 方法无法生效时 使用ActionChains

发布时间 2023-10-08 17:14:27作者: 无知者无畏123

背景知识1

ActionChains库 它的缩写来自于以下单词:Action(动作)和Chains(链)

背景知识2

ActionChains 提供了更多灵活的鼠标和键盘操作选项,可以用于处理更复杂的场景,如果 click() 方法无法生效,
可以尝试使用 ActionChains 来模拟点击事件。
在使用Selenium时,存在一种情况是 click() 方法可能无法成功触发元素的点击事件,
但 ActionChains 仍然可以正常工作。这可能是由于以下原因之一: 元素位置被覆盖:可能有其他元素位于目标元素上方,导致点击事件无法触发。
您可以尝试使用 ActionChains 来模拟鼠标操作,通过 move_to_element() 方法将鼠标悬停在目标元素上,
然后使用 click() 方法触发点击事件。 元素可点击性被禁用:目标元素可能被设置为不可点击,例如通过CSS属性 pointer
-events: none 或 JavaScript disabled 属性。
在这种情况下,click() 方法将无法触发点击事件。使用 ActionChains 可以通过模拟鼠标点击来绕过这个限制。

 

 

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import Keys
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
# 实例化驱动对象
driver=webdriver.Chrome()
driver.maximize_window()

def open_brower(url,loc):

    # 打开网址
    driver.get(url)
    sleep(3)
    # 模拟鼠标动作
    action = ActionChains(driver)
    print("页面已经展示,开始点击")
    # 定位元素
    ele = driver.find_element(By.CSS_SELECTOR, loc)

    action.move_to_element(ele).click().perform()
    sleep(3)
    print("弹出选择照片框了吗")

    # 退出
    driver.quit()

if __name__ == '__main__':
    u="http://sahitest.com/demo/php/fileUpload.htm"
    l='#file'
    open_brower(u,l)