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

问题描述 投票:0回答:6

如何通过id找到输入元素,其中最后2位数字随机变化?

<input id="start-time-hours-c31" class="focused" name="startTimeHours" value="" placeholder="hh" maxlength="2" type="text">
java selenium selenium-webdriver xpath css-selectors
6个回答
3
投票

快速回答

当最后2位数字随机变化时,

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

使用输入标签的2个属性,

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

如果它解决了您的查询,请告诉我们。


3
投票

由于id属性的最后2个字符随机变化,此外您还需要考虑其他一些属性,您可以使用以下任一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']"));

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')]"));

1
投票

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

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

1
投票

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

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


1
投票

您可以使用其中任何一个:

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

(or)

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

如果上面的返回单个webelement然后你可以使用它,否则如果它返回多个元素,则转到xpath中的name属性。

© www.soinside.com 2019 - 2024. All rights reserved.