【发布时间】:2016-04-12 00:14:15
【问题描述】:
我正在测试一个网页,我需要在其中选择几个复选框,然后单击提交。
我的问题是我要求 Selenium 首先单击的复选框被忽略。无论我按什么顺序放置它们,代码中的第一个都不会被点击,但反过来测试也不会失败,所以我知道 Selenium 至少找到了它,并认为它被点击了。
这是复选框的 HTML:
<ul class="input">
<li class="expandable">
<span class="expand-link collapsed" title="Click to collapse"></span>
<input type="checkbox" id="g1:1" name="g1" value="1">
<label for="g1:1">Some text</label>
<ul class="">
<ul class="input">
<li class="expandable">
<span class="expand-link collapsed" title="Click to collapse"></span>
<input type="checkbox" id="g2:1" name="g2" value="1">
<label for="g2:1">Some text</label>
<ul class="">
我是从这个开始的:
driver.findElement(By.id("g1:1")).click();
driver.findElement(By.id("g2:1")).click();
每次点击第二个元素而不是第一个。然后我在它之前添加了一个 WebDriverWait,以防它与它有关,如下所示:
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("g1:1"))));
driver.findElement(By.id("g1:1")).click();
driver.findElement(By.id("g2:1")).click();
有同样的问题。然后我还尝试将它们包装在“if”语句中以首先检查元素的状态,如果未选中则单击它:
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("g1:1"))));
if ( !driver.findElement(By.id("g1:1")).isSelected() ) {
driver.findElement(By.id("g1:1")).click();
}
if ( !driver.findElement(By.id("g2:1")).isSelected() ) {
driver.findElement(By.id("g2:1")).click();
}
这些都没有帮助。如果我注释掉第一个复选框,那么问题就会简单地转到第二个。
关于我缺少什么的任何想法?
HTML 片段
<li class="expandable">
<span class="expand-link collapsed" title="Click to collapse"></span>
<input type="checkbox" id="g1:1" name="g1" value="1">
<label for="g1:1">Some text</label>
</input>
【问题讨论】:
-
你能分享
HTML片段吗,如果你注释掉第二个会发生什么,第一个被选中了吗? .. 你确定它是checkbox而不是radioButton -
-
您能否编辑您的问题并为两个复选框添加完整的 html。
-
它在我的机器上工作正常,使用你的代码,两个文本框都被选中。 Here
-
您使用的是哪个浏览器,我已经在 firefox 上尝试过,它的运行非常好。 Screenshot
标签: java selenium testing automation automated-tests