首页 > 解决方案 > 如何在 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

标签: javascriptpythonseleniumrobotframework

解决方案


尝试使用下面的 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中是大写的。


推荐阅读