javascript - 如何在硒中执行javascript
问题描述
我正在尝试使用 python 和 selenium 自动化一个过程。我以前在不同的网站上使用过 selenium,但是在这个网站上,我需要执行 javascript,我不知道如何,尽管我在互联网上找到了一些教程。
我需要在此下拉菜单中单击快速输入,我可以使用 selenium 定位元素,但我无法执行 javascript。
<li id="MENU_QUICKENTRY" tabindex="0" navigateurl="Quickentry.event" onclick="javascript:return getTabData(this.id,event);">
Quick Entry
</li>
当我通常尝试 .click() 时,它会抛出 ElementNotInteractableException。
谢谢你的所有回答
编辑:我可以点击缓解 .click( 并且它有效,所以它可能是因为它不可见。¨
解决方案
发生此异常的原因是您的元素上方的其他元素(重叠)并且当 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 - onchange 函数调用无穷次
- google-apps-script - urlfetchapp.fetch
Google Apps 脚本中不允许出现错误 - file - 使用 Glide 显示保存到外部存储 MediaStore 中的图像
- c# - 如何构建 SSAS 项目文件以在 Cube 上执行 Adomd?
- c - 使用两个源文件编译 C 项目时出错 (linux)
- c - 我不知道为什么写系统调用似乎没有延迟
- php - 当 WooCommerce 中的库存为零时,PHP Snippet 隐藏简短描述
- reactjs - 未捕获的错误:当在反应路由器内的组件内使用 useState 时,挂钩调用无效
- python - 使用 imshow 绘制数组时将特定颜色分配给数组的值而不创建辅助数组
- c# - 有没有办法在 C# 中获取 AsymmetricKeyParameter 的密钥 ID 和指纹?