我正在测试的页面有用于数据输入的文本框,但它们嵌套在同名的类中。我如何找到正确的人知道哪一个输入数据?
示例代码:
<span class="sectionWrapper"
<div class="lineItem"
<div class="Name" title="Fire" </div>
<div class="itmeLimit"
<input name="limit">
</div>
</div>
<div class="lineItem"
<div class="Name" title="Wind" </div>
<div class="itmeLimit"
<input name="limit">
</div>
</div>
<div class="lineItem"
<div class="Name" title="Hail" </div>
<div class="itmeLimit"
<input name="limit">
</div>
</div>
</span>
所以基本上,我需要在输入名称=“限制”字段中输入值。如何为标题Wind输入“20,000”?
以下是一段实际代码:
<span class="sectionWrapper" sort-order="27">
<div class="linItm_tableTopWrap tableTopWrap_ifSubLine">
<div class="subLine_tableRowsHeader">
<div class="linItm_tableRow subLine_tableRow" sort-order="28">
<div class="linItm_visibleRow visibleRow_ifSubLine">
<a class="linItm_accordionArrow subLine" href="#" style="display: none;"/>
<a class="remove removeLineItem" style="visibility: hidden" name="A. Dwelling - Fire" href="#"/>
<div class="linItm_lineItemName" title="A. Dwelling - Fire">A. Dwelling - Fire</div>
<div class="linItm_date">08/25/2015</div>
<div class="linItm_limit_wrap">
<div class="linItm_limit_dollarInput">
<input class="currencyInput contentRow_amountInput resetPremiums limitInput maxMin" type="text" style="text-align:right" value="0.00" name="limit"/>
<div class="inputDollarSign">$</div>
</div>
</div>
<div class="linItm_deductible_wrap">
<div class="linItm_proRataPremium_wrap contentRow_rataPremium black">
<div class="linItm_annualPremium_wrap black">
<input class="linItm_manualCheckbox" type="checkbox" name="manual"/>
<a class="view" href="#" style="display: none;"/>
</div>
<div class="linItm_accordionRow accordionRow_ifSubLine" style="height: 0px;"/>
</div>
<div class="linItm_tableRow subLine_tableRow" sort-order="29">
<div class="linItm_tableRow subLine_tableRow" sort-order="30">
<div class="linItm_tableRow subLine_tableRow" sort-order="31">
<div class="linItm_tableRow subLine_tableRow" sort-order="32">
<div class="linItm_tableRow subLine_tableRow" sort-order="33">
<div class="linItm_tableRow subLine_tableRow" sort-order="34">
<div class="linItm_tableRow subLine_tableRow" sort-order="36">
<div class="linItm_tableRow subLine_tableRow" sort-order="37">
<div class="visibleRow_ifSubLine_bottomArea"/>
</span>
答案 0 :(得分:1)
查找可以包含输入的所有div:
List<WebElement> lineItemDivs = driver.findElements(By.cssSelector(".lineItem"));
遍历每个div的子节点,直到找到具有适当属性键/值的元素。如果找到这样的元素,找到该特定div的输入字段并输入所需的值:
for (WebElement div : lineItemDivs)
{
if (div.findElements(By.cssSelector("[title='Wind']")).size() > 0)
{
div.findElement(By.tagName("input")).sendKeys("20000");
}
}
答案 1 :(得分:0)
保持简单。您可以使用XPath定位器并一次性找到输入:
//div[contains(@class, "linItm_visibleRow") and div/@title="A. Dwelling - Fire"]//input[@name="limit"]