【问题标题】:The string variable passed through an xpath is not locating the element and throwing an exception通过 xpath 传递的字符串变量未定位元素并引发异常
【发布时间】:2021-07-21 23:12:06
【问题描述】:
public static void selectNavigationLink(String mainMenu, String subMenu) {

    WebElement mm = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[normalize-space()='+mainMenu+']")));
    mm.click();

    WebElement sm = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(),'+subMenu+')]")));
    sm.click();
}

有人告诉我编写脚本,我必须将变量传递到 xpath 以使其更健壮,但是作为变量传递给 xpath 的属性值不是定位元素,而是当我直接将其作为xpath 中的属性值,它定位一个元素。而且,这是我收到的错误消息--

没有这样的元素:无法定位元素:{"method":"xpath","selector":"//span[normalize-space()='+mainMenu+']"

【问题讨论】:

  • 你的意思是你试图用 Java 选择一个 DOM 元素?你想做什么?
  • @JeremyThille 是的。你知道为什么我无法找到一个元素吗?但是当我用 xpath 中的联系人替换主菜单和用新联系人替换子菜单时。它定位一个元素。

标签: javascript java selenium selenium-webdriver automation


【解决方案1】:

xpath里面变量的使用是错误的。请尝试以下操作:

public static void selectNavigationLink(String mainMenu, String subMenu) {

WebElement mm = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[normalize-space()='" + mainMenu + "']")));
mm.click();

WebElement sm = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(),'" + subMenu + "')]")));
sm.click();

}

【讨论】:

  • 是的,我的领导在早上帮我解决了这个问题。非常感谢:)
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多