【发布时间】:2020-07-17 16:49:20
【问题描述】:
您好,我正在尝试自动化使用城市名称启动搜索的场景,这将为我提供该城市可用考试中心的列表,并带有复选框以选择所需的考试中心。我尝试了很多方法,但未能根据标签文本中提供的“邮政编码”选择考试中心。
如下代码所示,有2个考点(testCenter_1和testCenter_2),每个考点都有一个复选框,其地址显示在label标签中。我正在尝试根据标签标签中的邮政编码 (HP19 8GJ) 定位并选择测试中心 2。
<div class="container">
<div class="row">
<div class="col-md-7 col-sm-12">
<div id="testCenterList">
<div style="visibility:hidden;">
</div>
<table cellspacing="0" id="centerTable">
<caption class="access">This table lists the test centres closest to the area that searched </caption>
<thead>…</thead>
<tbody id="testCenterListTable">
<tr id="testCenter_1" class="group0">
<td class="selectRow displayDesktopOnlyView" scope="row">
<input id="selectedTestCenters:1" type="checkbox" name="selectedTestCenters" value="48958">
<label for="selectedTestCenters:1" class="access"> Pearson Centre - 9 Lloyds Street Northampton NN1 2NP</label>
</td>
</tr>
<tr id="testCenter_2" class="group0">
<td class="selectRow displayDesktopOnlyView" scope="row">
<input id="selectedTestCenters:2" type="checkbox" name="selectedTestCenters" value="79312">
<label for="selectedTestCenters:2" class="access"> Pearson Centre - 5 Smeaton Close Aylesbury HP19 8GJ</label>
</td>
<td>
</tr>
Please click here to see the screenshot of code
我可以使用 xpath 和 id 选择 testCenter_2,如下所示,但无法提供一个通用定位器来根据标签文本识别一个测试中心。 注意:我在这里使用了元素可见性条件,因为搜索结果显示在页面底部。
WebDriverWait wait = new WebDriverWait(driver, 10000);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*@id='selectedTestCenters:2']")));
driver.findElement(By.xpath("//*[@id='selectedTestCenters:2']")).click();
要根据标签文本定位测试中心 2 并选中复选框,我使用了下面的行,但它给了我 ElementNotInteractableException。
driver.findElement(By.xpath("//*[@id='testCenterListTable']/tr[2]/td/label[contains(text(),'HP19 8GJ')]")).click();
请给点建议?
提前致谢
【问题讨论】:
-
将html代码作为文本,以便我们测试。不要使用图片。
-
请阅读为什么是screenshot of HTML or code or error is a bad idea。考虑使用基于格式化文本的相关 HTML、代码试验和错误堆栈跟踪来更新问题。
-
谢谢@AlexeyR。和 DebanjanB,感谢您对代码的建议。当我复制元素或外部 html 时,它返回超过 1000 行。因此,我已经删除了除一个之外的所有测试中心的标签内的内容。如果问题中包含的代码看起来不错,请告诉我?
-
在 html 代码中没有选择或复选框。你能详细说明你的问题是什么吗?添加您的代码、预期行为和当前行为/异常。
-
感谢@pburgr 对此进行调查。我现在更新了问题和代码以更清晰。请看一下,如果它仍然缺少任何细节,请告诉我。
标签: java selenium xpath checkbox label