【问题标题】:How can we pass a variable( string) to an xpath contains function?我们如何将变量(字符串)传递给 xpath 包含函数?
【发布时间】:2015-12-17 10:07:13
【问题描述】:

我需要找到一个包含特定文本的元素。如何在不对文本进行硬编码的情况下做到这一点。如何使文本成为变量并将其传递给xpath 函数?

public static void selectEvent(String eventName) { 

WebElement eventLink = Browser.instance.findElement(By.xpath("//td[2]/a[1][contains(text(), 'Birthday Party')]")); 
eventLink.click(); 
} 

这里不使用文本生日派对,我需要使用已传递给方法的参数eventName。

【问题讨论】:

  • 您好,欢迎来到 SO!如果您在问题中表现出努力,将对社区有很大的帮助(和动力)。你自己已经尝试过什么?你遇到了什么问题? SO 不是简单地寻求解决方案的地方。
  • public static void selectEvent(String eventName) { WebElement eventLink = Browser.instance.findElement(By.xpath("//td[2]/a[1][contains(text(), )生日聚会')]”)); eventLink.click();在这里,而不是使用文本“生日派对”,我需要使用已传递给方法的参数 eventName..
  • 感谢您提供代码,但请编辑您的问题,以便以正确的格式反映这一点。这样其他人可以一口气看到所有内容,并可以为您提供指导。

标签: java selenium xpath


【解决方案1】:

如果您使用的是 java,则声明一个返回特定元素的方法,

public WebElement getElementByXpathContainsText(String xpath)
    {
    return webDriver.findElement(By.ByXPath(xpath));
    }

只需通过传递任何 xpath 作为参数调用 getElementByXpathContainsText()。

为您的代码尝试以下方式,

public static void selectEvent(String eventName) { 
WebElement eventLink = Browser.instance.findElement(By.xpath("//td[2]/a[1][contains(text(), '"+eventName+"')]")); eventLink.click(); 
}

【讨论】:

  • 当我尝试传递 eventName = "ABC 1 internal" 它给我一个错误“'value' must be a string。注意我在python中使用这个xpath。我相信这应该是一样吗?
【解决方案2】:

将此函数添加到您的类中,然后调用它:

public WebElement findElementUsingText(String searchText)
{
    return driver.findElement(By.xpath("//*[contains(text(),'"+searchText+"')]"));
}


     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2020-10-03
    • 2016-12-03
    相关资源
    最近更新 更多