如何在Python中使用RobotFramework SeleniumLibrary使用JavaScript单击Web元素?

如何在Python中使用RobotFramework SeleniumLibrary使用JavaScript单击Web元素?,javascript,python,selenium,robotframework,Javascript,Python,Selenium,Robotframework,我正在尝试使用JavaScript单击一个WebElement,但我无法为此创建JavaScript语句 我可以使用此语句单击“取消”按钮 driver.execute_javascript("$(\"div[title='Cancel']\")[0].click()") 但是点击另一个更复杂的元素,我正在尝试这个 expand_xpath = "//span[text()='Submit']//ancestor::table//a[text()='Expand']" driver.execu

我正在尝试使用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代码

请在这个链接上找到robotframeworkexecutejavascript关键字的表达式

第二次尝试:

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中是大写的。

因为您使用的是RobotFramework,所以这个很简单:

${locator}    //button[@id='abc']
Execute JavaScript    document.evaluate("${locator}", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click()

请注意,输入的xpath不应包含双引号字符,而应仅包含单引号,以防止JS解析错误

我正在使用此方法处理单击

论据: ele_xpath:要单击的元素的xpath

from SeleniumLibrary import SeleniumLibrary  

def click_element_with_javascript(ele_xpath):
            try:
                js_exp = "document.evaluate(\"##xpath##\", document.body, null, 9, null).singleNodeValue.click()".replace('##xpath##', ele_xpath)
                driver.execute_javascript(js_exp)
            except Exception as e:
                print("Element click through javascript resulted in Exception: {}".format(e))

我们需要查看您的示例平台。@dpapadopoulos您所说的示例平台是什么意思?您的代码运行在哪个平台上?你有链接让我们练习吗?@dpapadopoulos我在用Python的RobotFramework。你不可能练习。机器人框架与此无关。在任何情况下,对于您的可能助手来说,获得代码样本和脚本运行的平台都会容易得多。我已经尝试过了,它会说预期的参数应该是string类型。这与我们在selenium中使用JAVA.expand_element=driver.get_webelement//span[text='Submit']//祖先::table//a[text='expand']驱动程序所做的不同。执行_javascriptarguments[0]。单击,展开_element输出:类型错误:序列项1:预期的str实例,WebElement foundi已更新我的答案并将javascriot语句转换为字符串值。请尝试代码。不,我已经使用该方法向您提供了输出。请注意,我已经更新了我的答案。语句中有一个分号。使用:驱动程序。执行脚本参数[0]。单击;,要素