尝试了多种方法来获取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代码中观察到,label id和div id是相同的(1100),与其他类不同的是";设备测试-AndroidTesting";
有没有什么方法可以通过使用";设备测试-AndroidTesting";因为它是唯一唯一唯一且恒定的元素。
使用";设备测试-AndroidTesting";作为唯一的
label_1100
div_1100
根据给定的HTML打印所需的文本,您可以使用以下定位器策略:
-
打印
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"));