复选框中的iframe - 如何检查,有一个复选框,如果是一下就可以了

问题描述 投票:1回答:1

我使用Java和chromedriver。到目前为止,我用下面的代码只需点击一个按钮,然后一个小窗口弹出,我按下另一个按钮。有趣的是我没有改变任何框架。所有工作的罚款。下面是代码:

// click on button
driver.findElement(By.xpath(hyperlink_take_order)).click();
// a second small window popped up and I clicked another button
driver.findElement(By.xpath("//a[contains(text(),'accept')]")).click();

到目前为止,我使用的XPath,以确定我需要点击的按钮。

不时有第二小窗口,我都需要点击一个额外的复选框(有时多个复选框)。我试图通过XPath来寻找他们,但发现了XPath没有在这里工作。所有我的HTML得到的是这样的:

在这种情况下,17232的括号[]中的数字的每个时间变化,所以不能找到一个名字我可以使用的复选框。我读了计算器许多文章和发现的代码也没有工作,这个和平。

// click on button
driver.findElement(By.xpath(hyperlink_take_order)).click();
// a second small window popped up         
try
{
driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
System.out.println("change to iframe worked");
List<WebElement> CHECKBOXlist = driver.findElements(By.xpath("//input[@type='checkbox']"));
for(WebElement checkbox : CHECKBOXlist) 
{
System.out.println("there was a checkbox");
System.out.println(checkbox.getAttribute("name"));
checkbox.click();
}
driver.switchTo().defaultContent();
} 
catch (Exception e) 
{
System.out.println("there was no checkbox");
}
driver.findElement(By.xpath("//a[contains(text(),'accept')]")).click();
<div class="md-checkbox product-service md-theme-whitebackground">
<div tabindex="0" class=md-checkbox-container">
<input name="service[17232]" tabindex="-1" id="service_17232" type="checkbox" value ="1" />
</div>
<label class="md-check-label" for="service_17232">This one is blue</label>
</div>

你有什么想法,我怎么可以简单地点击所有的(有时是多个)复选框,在第二小窗口?谢谢

java iframe checkbox selenium-chromedriver
1个回答
0
投票

根据您所提供的HTML样品,它看起来并不像有你需要切换到一个iframe,所以driver.switchTo().frame(driver.findElement(By.tagName("iframe")));部分是无关紧要的。

对于点击一个复选框:

driver.findElement(By.xpath(//input[@type='checkbox']));

对于点击多个复选框:

List<IWebElement> checkboxes = driver.findElements(By.xpath("//input[@type='checkbox']"));
foreach (IWebElement e in checkboxes) {  e.Click();  }

最后,你可能希望在小窗口中指定复选框,而不是整个页面,所以你会使用这个定位器来代替:

//div[contains(@class, 'product-service')]/div/input[@type='checkbox']
© www.soinside.com 2019 - 2024. All rights reserved.