簡體   English   中英

如何通過硒找到具有隨機id屬性的元素

[英]How to find an element having random id attribute through Selenium

如何通過ID找到輸入元素,最后2個數字隨機變化?

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

快速回答

當最后2個數字隨機變化時,

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

使用Input標簽的2個屬性,

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

請讓我們知道它是否解決了您的查詢。

由於id 屬性的后2個字符隨機變化,因此,您還需要考慮其他一些屬性 ,並且可以使用以下定位策略之一

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

由於html也具有name標簽,因此您可以使用該名稱標簽來查找元素,例如:

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

而且,如果name標簽startTimeHours在頁面上不是唯一的,則可以使用以下xpath查找元素:

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

同意@TheSociety的答案,您也可以將其用作名稱和ID的組合

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

當值是動態的時,使用contains,sibling或Ancestor。

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

您可以使用它們之一:

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

(or)

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

如果以上返回單個webelement,則可以使用它;否則,如果它返回xpath中的name屬性,則返回多個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM