Java 如何获取Div中的子项计数甚至文本列表
我在TestNG中使用Java和Webdriver。我有一个文本框,用户在其中输入药物名称,然后单击Go按钮。然后,程序运行对RxNorm的查询,并返回药物名称的强度和形式。该网页有一个id为Java 如何获取Div中的子项计数甚至文本列表,java,testing,selenium,webdriver,Java,Testing,Selenium,Webdriver,我在TestNG中使用Java和Webdriver。我有一个文本框,用户在其中输入药物名称,然后单击Go按钮。然后,程序运行对RxNorm的查询,并返回药物名称的强度和形式。该网页有一个id为WhatDage的div,该div是一个按钮列表,具有该药物的适当强度/形式 我的问题是,如何获得该div中的元素数或显示给用户的强度/形式列表?最后,我将用相同的药物名称给RxNorm打电话,并比较结果 我尝试了以下方法: (1) String resultsWebPage = driver.findEl
WhatDage
的div,该div是一个按钮列表,具有该药物的适当强度/形式
我的问题是,如何获得该div中的元素数或显示给用户的强度/形式列表?最后,我将用相同的药物名称给RxNorm打电话,并比较结果
我尝试了以下方法:
(1) String resultsWebPage = driver.findElements(By.id("whatDosage")).toString();
System.out.println(resultsWebPage);
(2) int resultsWebPage = driver.findElements(By.id("whatDosage")).size();
System.out.println(resultsWebPage);
第一个简单示例返回id。第二个示例只给出了1的输出。我输入的药物名称在whatDage
div中返回11个结果
div如下所示:
<div id="whatDosage" class="btn-group btn-group-vertical buttons-radio span12" role="radiogroup">
<input id="dosage1" class="hide" type="radio" value="20 MG Enteric Coated Capsule" name="dosage">
<button class="btn btn-large" rel="dosage1" role="radio" type="button">20 MG Enteric Coated Capsule</button>
<input id="dosage2" class="hide" type="radio" value="30 MG Enteric Coated Capsule" name="dosage">
<button class="btn btn-large" rel="dosage2" role="radio" type="button">30 MG Enteric Coated Capsule</button>
<input id="dosage3" class="hide" type="radio" value="60 MG Enteric Coated Capsule" name="dosage">
<button class="btn btn-large" rel="dosage3" role="radio" type="button">60 MG Enteric Coated Capsule</button>
</div>
20毫克肠溶胶囊
30mg肠溶胶囊
60毫克肠溶胶囊
输入
元素被隐藏,而按钮
元素就是屏幕上显示的元素 这可以通过更改元素定位策略来解决
我假设你的网页骨架如下。虽然这可能不准确,但它会让您了解使用的方法
<div id="whatDosage">
<div class="strength>Data 1</div>
<div class="strength>Data 2</div>
<div class="strength>Data 3</div>
</div>
它所做的是选择“whatDage”div,而不是您所需要的子元素。既然有一个“whatDage”div,这就解释了doing.size()返回1
你应该做一些这样的事情:
List<WebElements> results = driver.findElements(By.className("strength"));
System.out.println(results.size());
for (WebElement result : results){
System.out.println(result.getText());
}
您需要更改策略,以便根据代码定位strength/form元素。有些approach是By.id、By.className、By.xpath等,可以参考selenium文档。这可以通过更改元素定位策略来解决 我假设你的网页骨架如下。虽然这可能不准确,但它会让您了解使用的方法
<div id="whatDosage">
<div class="strength>Data 1</div>
<div class="strength>Data 2</div>
<div class="strength>Data 3</div>
</div>
它所做的是选择“whatDage”div,而不是您所需要的子元素。既然有一个“whatDage”div,这就解释了doing.size()返回1
你应该做一些这样的事情:
List<WebElements> results = driver.findElements(By.className("strength"));
System.out.println(results.size());
for (WebElement result : results){
System.out.println(result.getText());
}
您需要更改策略,以便根据代码定位strength/form元素。有些approach是By.id、By.className、By.xpath等,可以参考selenium文档。假设@nrbafna对HTML外观的描述是正确的,这很简单。要获得“力量”列表,只需: 当然,将它们全部打印出来是:
for (WebElement result : results) {
System.out.println(result.getText());
}
假设@nrbafna对于HTML的外观是正确的,那么就很简单了。要获得“力量”列表,只需: 当然,将它们全部打印出来是:
for (WebElement result : results) {
System.out.println(result.getText());
}
如果你想要一个有用的答案,你需要分享HTML的外观。如果你想要一个有用的答案,你需要分享HTML的外观。谢谢你,你的解决方案也很有用。谢谢你,你的解决方案也很有用。
for (WebElement result : results) {
System.out.println(result.getText());
}