【问题标题】:Java Selenium. Find element by text for certain xpathJava 硒。通过文本查找某些 xpath 的元素
【发布时间】:2016-06-10 15:14:37
【问题描述】:

试图找到一个 xpath 表达式用于:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPATH HERE"))).click();

页面上的元素显示“邀请用户”,我需要能够点击它

我需要找到元素/a[@id='inviteUsers_8ef17ba4-b739-4fb6-8198-3862ea84c381_toggle'],但问题是“inviteUsers_”之后的字符是动态生成的

我已经尝试过这些:

"//*[contains(.,'Invite Users')]";
"//a[contains(.,'Invite Users')]";

这些给NoSuchElement 例外。

这是完整的 XPATH:

/html/body/div[@class='col-xs-10 col-xs-offset-2 main']/fieldset[@class='form-horizontal']/div[@id='roles']/div[@id='entitlements']/div[@class='panel panel-default '][3]/div[@id='service_8ef17ba4-b739-4fb6-8198-3862ea84c381']/div[@class='panel-body']/div[@class='panel panel-default'][1]/div[@class='panel-heading']/h4[@class='panel-title']/a[@id='inviteUsers_8ef17ba4-b739-4fb6-8198-3862ea84c381_toggle'] 

【问题讨论】:

  • 你找到答案了吗?如果没有,请发布您尝试点击的链接的相关 HTML。

标签: java selenium xpath selenium-webdriver


【解决方案1】:

你可以用starts-with()解决它:

//a[starts-with(@id, "inviteUsers_")]

【讨论】:

  • 不幸的是仍然未能找到该元素 :( 我是否从 xpath 中遗漏了什么?也许我需要在尝试访问该元素之前获取一个特定的 div ?
  • @shanwar 不,如果它像那样失败,它也会以特定的div 失败。这是一个公共页面,你可以分享一个链接吗?谢谢。
  • 抱歉,无法做到这一点。机密页面正在开发中。在随后单击前一个元素后,该元素会以某种方式出现在下拉区域中,因此它会失败吗?我认为等待(超时前 7 秒)可以解决这个问题......
  • @shanwar 可能会发生各种各样的事情,很难说到底是什么。你能发布这个元素在 HTML 中的样子吗?此外,请确保您为该元素的出现进行了所有必要的操作。
  • 看着 Selenium 执行测试(使用调试器)我可以看到它一直执行到它试图找到该元素的地步
【解决方案2】:

如果这不起作用,请尝试查找唯一的父级。

//div[contains(@id, 'service')]//a[contains(@id, 'inviteUsers')]

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2021-05-07
    • 2015-12-27
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2016-12-04
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多