click() 方法无法生效时 使用ActionChains
背景知识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)