javascript - 如何在selenium中执行javascript

标签 javascript python selenium selenium-webdriver selenium-chromedriver

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

enter image description here

我需要点击这个下拉菜单中的“快速输入”,我可以使用selenium找到该元素,但我无法执行javascript。

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

当我通常尝试 .click() 时,它会抛出 ElementNotInteractableException。

谢谢大家的回答

编辑:我可以使用 .click( 单击缓解措施,并且它有效,因此可能是因为它不可见。¡

EDIT2:通常是这样的,你必须将鼠标移动到缓解位置才能访问快速入口 enter image description here

最佳答案

此异常是由于元素上方(重叠)的其他元素而发生的,并且当 selenium 尝试与其交互时,另一个元素阻止了它。因此,为了避免这个问题,我们可以使用 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()

关于javascript - 如何在selenium中执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61055564/

相关文章:

python - 多页抓取期间出现 NoneType 错误

javascript - 兄弟 Controller 可以在没有父级帮助的情况下相互通信吗 - AngularJS

持有 jquery 对象的 javascript 对象?

javascript - 如何使用 CSS 禁用 asp.net 图像

python - Pandas - 数据框的平均值仅返回第一列的平均值

python - 比较序列 Python

python - autofmt_xdate 删除所有子图的 x 轴标签

java - 我想要 Do - While 循环,包括 If Else 语句

javascript - 带有事件点的 jQuery 轮播

java - 如何使用 Selenium 为 Firefox 和 Chrome 禁用推送通知?