javascript - 如何在 Python 中使用 RobotFramework SeleniumLibrary 使用 JavaScript 单击 WebElement?
问题描述
我正在尝试使用 JavaScript 单击 WebElement,但我无法为此创建 JavaScript 语句。
我可以使用此语句单击取消按钮
driver.execute_javascript("$(\"div[title='Cancel']\")[0].click()")
但是在点击另一个更复杂的元素时,我正在尝试这个
expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.getElementByXpath('${expand_xpath}').click()")
JavascriptException:消息:javascript 错误:document.getElementByXpath 不是函数
此expand_xpath存储了我需要单击的 WebElement 的 xpath,但我无法构建用于单击此元素的 JS 代码。
请在此链接上找到 RobotFramework Execute Javascript关键字扩展 https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Execute%20Javascript
第二次尝试:
expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.evaluate('${expand_xpath}', document.body, null, 9, null).singleNodeValue.click()")
输出:
JavascriptException: Message: javascript error: missing ) after argument list
解决方案
尝试使用下面的 javaScript 单击元素:
element= driver.find_element_by_xpath("//span[text()='Submit']//ancestor::table//a[text()='Expand']")
driver.execute_script("arguments[0].click();", element)
或在下面使用:
expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']"
driver.execute_javascript("document.getElementByXPath('${expand_xpath}').click()")
注意:“P”在XPath中是大写的。
推荐阅读
- ember.js - 在保存到服务器之前更改 Ember 模型的值
- python - 如何解决阅读不一致的问题
- python - 在特定单词和右括号之间打印文本
- javascript - 如何修复图标列对齐
- javascript - 在WebdriverIO nodejs中添加值后如何在nodejs中获取webElement的属性
- java - 满足特定条件时交换数组列表中的元素
- ios - 如何仅从 api 请求一次 json 并在多个类中使用它?
- ruby - 如何在 RubyGems 任务中修复“未初始化的常量 Gem::GEM_PRELUDE_SUCKAGE”
- c# - 为什么我在运行游戏时在文本组件上看不到任何文本?
- macos - 如何在 mac 上修复 Wine 中的“前缀创建错误退出”?