如何在Python中使用RobotFramework SeleniumLibrary使用JavaScript单击Web元素?
我正在尝试使用JavaScript单击一个WebElement,但我无法为此创建JavaScript语句 我可以使用此语句单击“取消”按钮如何在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
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]。单击;,要素