【问题标题】:Selenium WebDriver - How to get id of the element when they have dynamic id?Selenium WebDriver - 当元素具有动态 id 时如何获取元素的 id?
【发布时间】:2016-02-12 00:29:29
【问题描述】:

我在这个元素(下拉图像)中遇到了问题,我已经尝试过这个元素,但这些都不起作用,可能是因为这两个元素相同并且它们的 id 是动态的。
我尝试获取绝对 Xpath 并且它有效。 (但这不是一个好主意)

这是我目前尝试过的元素:

//div[@class='drop-image']
//div[contains(@class,'drop-image')]

任何帮助将不胜感激。
多谢你们!

【问题讨论】:

    标签: java html selenium selenium-webdriver


    【解决方案1】:

    您的父 div id 不同..您可以使用相同的.. 您的第一个元素父 ID 的子字符串为 BaseCurrencyCombo,而您的第二个元素的子字符串为 TargetCurrencyCombo

    第一个元素

    //div[@id=ct100.....BaseCurrencyCombo]//div[@class='drop-image']
    

    第二个元素

    //div[@id=ct100.....TargetCurrencyCombo]//div[@class='drop-image']
    

    //div[@class='drop-image'][1]
    

    请在上面两个 Xpath 中输入正确/完整的 id .. 太长了 ;)

    希望对你有帮助:)

    【讨论】:

    • 我认为BaseCurrencyComboTargetCurrencyCombo 的id 都是动态的不是吗?
    • 哦..如果这两个 id 都是动态的,那么您每次都找到类似的东西吗.. 可能所有这些数字都发生了变化,但 BaseCurrentCombo 将始终相同.. 如果是这种情况,那么id 也使用 contains
    • 如果您在更改动态值后发现任何类似的字符串,请告诉我
    • 或者您可以尝试使用 //div[@class='drop-image'][1] .. 这里 [1] 表示它使用 xpath 找到的 1 个元素 .. 试一试 .. 使用[2] 如果你想要第二个元素,则在 xpath 之后
    • //div[@class='drop-image'][1] 效果很好,而且更干净。感谢您增加知识先生!
    【解决方案2】:

    您说 div id 是动态的 ....但是您是否观察到第一部分(美元)在 div ID 下有一个名为 BaseCurrencyCombo 的东西,而对于第二部分(欧元)它是 TargetCurrencyCombo .
    所以我不认为这两个会改变。

    你可以试试这些 xpath:

    1>//div[contains(@id,'BaseCurrencyCombo')]//div[contains(@class,'drop-image')]
    2>//div[contains(@id,'TargetCurrencyCombo')]//div[contains(@class,'drop-image')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      相关资源
      最近更新 更多