我正在尝试使用java脚本创建一个通用方法来使用xpath作为定位器策略来查找webelement。请帮忙填写代码,我使用了下面的代码
path = //input[@id='image']
def getElementByXpathJavaScript(driver ,path):
return driver.execute_script("return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue")
运行代码时出现错误
WebDriverException: Message: unknown error: path is not defined
基本上我想用java脚本执行器点击元素。如果我的方法是正确的,请告诉我吗?
答案 0 :(得分:0)
路径变量应如下所示传递。
def getElementByXpathJavaScript(driver ,path):
return driver.execute_script("return document.evaluate('"+path+"', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue")
答案 1 :(得分:0)
错误说明了一切:
WebDriverException: Message: unknown error: path is not defined
这意味着path
变量未正确定义。
正如您所提到的Python
所以您需要在""
变量的值周围提供path
,并且以下代码块应该可以使用 JavaScript
< / strong>方式:
path = "//input[@id='image']"
def getElementByXpathJavaScript(driver ,path):
return driver.execute_script("return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue")
如果您希望采用 Python
为基础的 JavaScriptExecutor
方式,这似乎更简单,您可以使用以下选项:< / p>
element = driver.find_element_by_xpath("//input[@id='image']")
driver.execute_script('arguments[0].click();', element)
答案 2 :(得分:0)
基本上我想使用java脚本执行器
单击元素
您可以使用机器人assign id to element为元素提供临时ID,然后您可以在javascript中使用该ID。由于您使用selenium library关键字来查找元素,因此您可以使用所需的任何定位器。
例如:
assign id to element xpath=//input[@id='image'] temporary_id
execute javascript document.getElementById('temporary_id').click()