selenium 如何< div>使用XPath高效地从标记中获取ID

ehxuflar  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(148)

尝试了许多方法来获取ID,但我无法找到确切的ID或有效的结果,因为有多个ID和它共享多个相同的类。
尝试以下方法,但我没有得到确切的ID需要

//Approach 1
divId = driver.findElement(By.xpath("(//div[@data-activity-type='CompatCheck'])")).getAttribute("id");

//Approach 2
divId = driver.findElement(By.xpath("(//div[@data-activity-type='CompatCheck'])[2]")).getAttribute("id");

//Approach 3
driver.findElement(By.xpath("//div[@data-activity-type='CompatCheck'] and contains(.,'AndroidTesting')]")).getAttribute("id"));

请查找下面的HTML代码:

<div> 
         <strong>Reena</strong>: 
         <label id="compatcheck_label">
         <em class="Highlight" style="padding: 1px; box-shadow: rgb(229, 229, 229) 1px 1px; border-radius: 3px; 
background-color: rgb(0, 191, 255); color: rgb(0, 0, 0); font-style: inherit;" match="test" loopnumber="472046515">Test</em>device testing - AndroidTesting
         </label>
        </div>
        <div>
         <span style="float: none;" class="special-apps-list">(Special Tag) 
        </span>
         <label id="label_1100"></label>                            
         <span style="float: none;">0d 4h 39m 49s</span>
        </div>
        <div id="div_1100" data-activity-type="CompatCheck" class="mainActivity">
        </div>

从上述HTML代码中观察到,标签id和div id相同(1100),与其他类的区别在于“器械测试- AndroidTesting”
是否有任何方法可以通过使用“设备测试- AndroidTesting”获得label id或div id(因为两者相同),因为它是唯一唯一的和恒定的元素。
使用“器械测试- AndroidTesting”作为唯一的预期输出

label_1100
 div_1100
mrzz3bfm

mrzz3bfm1#

根据给定的HTML打印所需的文本,您可以使用以下locator strategies

  • 打印 label_1100
System.out.println(driver.findElement(By.xpath("//label[@id='compatcheck_label'][contains(., 'AndroidTesting')]//following::div//label[1]")).getAttribute("id"));
  • 打印 div_1100
System.out.println(driver.findElement(By.xpath("//label[@id='compatcheck_label'][contains(., 'AndroidTesting')]//following::div[2]")).getAttribute("id"));

相关问题