我正在尝试使用python和selenium自动化过程。我以前在不同的网站上使用过硒,但是在这一网站上,我需要执行javascript,尽管我在互联网上找到了一些教程,但我不知道如何。

javascript - 如何在Selenium中执行JavaScript-LMLPHP

我需要在此下拉菜单中单击“快速输入”,我可以使用硒找到元素,但是我无法执行javascript。

<li id="MENU_QUICKENTRY" tabindex="0" navigateurl="Quickentry.event" onclick="javascript:return getTabData(this.id,event);">
                                        Quick Entry
                                    </li>


通常,当我尝试.click()时,它将引发ElementNotInteractableException。

谢谢你的回答

编辑:我可以使用.click()单击缓解措施,它可以正常工作,因此可能是因为它不可见。

EDIT2:通常是这样,您必须将鼠标移至缓解状态才能访问“快速输入”
javascript - 如何在Selenium中执行JavaScript-LMLPHP

最佳答案

发生此异常是由于元素上方(重叠)的其他元素,以及当硒试图与之交互时,另一个元素阻止了它。因此,为避免此问题,我们可以使用ActionChains在单击该元素之前移至该元素。

wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(),'Quick Entry')]")))

actionChains = ActionChains(driver)
actionChains.move_to_element(element).click().perform()


请在导入中添加以下内容:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


更新的部分:

menu= wait.until(EC.element_to_be_clickable((By.XPATH, "//*[contains(text(),'Mitigation')]")))
submenu = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(),'Quick Entry')]")))


hover = ActionChains(driver)
hover.move_to_element(menu).click()
hover.click(submenu)
hover.perform()

07-26 09:35