【问题标题】:Handle elements that have changing ids处理具有变化 id 的元素
【发布时间】:2016-12-02 02:29:34
【问题描述】:

我正在运行脚本来自动化测试用例,发现 id 一直在变化。下面是我的 HTML 代码 Firebug 试驾:

<button class="G0036HC-b-a G0036HC-b-o G0036HC-b-g" id="gwt-uid-470" tabindex="0" aria-labelledby="gwt-uid-470" role="button" type="button"><div class="G0036HC-b-j">Click to continue</div></button>

检查员:

<button class="G0036HC-b-a G0036HC-b-o G0036HC-b-g" id="gwt-uid-320" tabindex="0" aria-labelledby="gwt-uid-320" role="button" type="button"><div class="G0036HC-b-j">Click to continue</div></button>

只有 id 的变化。 任何帮助将不胜感激。

【问题讨论】:

  • 萤火虫:
  • 检查员:
  • 是否有一个公共 url,我们可以在其中检查整个 DOM。似乎在父元素或兄弟元素的帮助下,我们应该能够定位元素。

标签: java selenium selenium-webdriver


【解决方案1】:

您可以通过xpath 获取元素并检查id 属性是否以gwt-uid- 开头

//button[starts-with(@id, "gwt-uid-")]

【讨论】:

  • 试过了,但不起作用,因为该页面中的所有按钮都以 id "gwt-uid-" 开头
  • @SukeshBolar 好的,但从问题来看,不清楚您需要哪个按钮以及它与其他按钮有何不同。
  • 以上两个HTML代码是两个独立的按钮。他们的 id="gwt-uid-320" 是动态的。只有最后 3 位是动态变化的。你能帮我解决这个问题吗?
  • @SukeshBolar 好的,我很乐意提供帮助,但需要清晰的图片。你需要同时点击这两个按钮吗?
  • 告诉我们是哪一个!
【解决方案2】:

此外,@alecxe 建议的答案我还建议您尝试使用基于文本的 xpath 搜索。我经常遇到等待问题,所以也建议使用explicit等等。

// //div[.='Click to continue']/..
By byXpath = By.xpath("//div[.='Click to continue']");

WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(byXpath));
//    myDynamicElement.click();

【讨论】:

  • 我做得很好,我的昵称太复杂而无法正确重复:D
  • O.o @alecxe 真有趣
  • @saifur 仍未检测到元素 :(
  • @SukeshBolar 有什么例外?
  • @SukeshBolar 在这种情况下你能提供更多html吗?
【解决方案3】:

考虑到以下观察结果,以下代码应该可以正常工作。

  • 页面上的所有按钮都以gwt-uid-为前缀,数字后缀变化
  • 如果页面上的按钮具有唯一的文本,则使用

By.xpath("//button/div[text()='点击继续']")

  • 如果有多个按钮具有相同的文本,则使用索引。例如。然后使用两个具有相同文本的关闭按钮,

By.xpath("(//button/div[text()='Close'])[2]") # 对于第二次出现,请注意 selenium 不是零索引

【讨论】:

    【解决方案4】:

    使用关注... //输入[@id='']/following::input[1]

    你可以使用preceding以同样的方式来识别子节点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-11
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多