如何通过硒找到具有随机id属性的元素

时间:2019-03-19 01:42:05

标签: java selenium selenium-webdriver xpath css-selectors

如何通过ID找到输入元素的后2个数字随机变化?

<input id="start-time-hours-c31" class="focused" name="startTimeHours" value="" placeholder="hh" maxlength="2" type="text">

6 个答案:

答案 0 :(得分:3)

快速解答

后2个数字随机变化时,

driver.findElement(By.xpath("//input[contains(@id,'start-time-hours-c')]"));

使用Input标签的2个属性,

driver.findElement(By.xpath("//input[@name='startTimeHours' and @class='focused']"));

请让我们知道它是否解决了您的查询。

答案 1 :(得分:3)

由于id 属性的后两个字符是随机变化的,另外,您还需要考虑其他一些属性,并且您可以使用跟随Locator Strategies

  • cssSelector

    WebElement elem = driver.findElement(By.cssSelector("input[id^='start-time-hours-c'][name='startTimeHours']"));
    
  • xpath

    WebElement elem = driver.findElement(By.xpath("//input[starts-with(@id, 'start-time-hours-c') and @name='startTimeHours']"));
    

答案 2 :(得分:1)

由于html也具有name标签,因此您可以使用该名称标签来查找元素,例如:

WebElement element = driver.findElement(By.name("startTimeHours"));

如果name标签startTimeHours在页面上不是唯一的,则可以使用以下xpath找到该元素:

WebElement element = driver.findElement(By.xpath("//input[contains(@id,'start-time-hours')]"));

答案 3 :(得分:1)

同意@TheSociety回答,您还可以将其用作名称和ID的组合

//input[contains(@id,'start-time-hours-c') and contains(@name,'startTimeHours')]

答案 4 :(得分:1)

当值为动态值时,使用contains,sibling或Ancestor。

xpath-//输入[contsins(@ id,'start-time-hours-c')]

答案 5 :(得分:1)

您可以使用它们之一:

 //input[starts-with(@id,'start-time-hours-c')]

(or)

 //input[contains(@id,'start-time-hours-c')]

如果上述方法返回单个webelement,则可以使用它,否则,如果它返回xpath中的name属性的多个元素,则使用