使用JavaScriptExecuter创建使用xpath查找webelement的方法

时间:2018-01-10 12:58:34

标签: javascript python selenium robotframework

我正在尝试使用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脚本执行器点击元素。如果我的方法是正确的,请告诉我吗?

3 个答案:

答案 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()