我正在尝试使用Selenium选中一个复选框。该页面如下所示。
然后,当我单击“编辑”时,它将更改为以下显示的格式。
这时,我可以使用下面显示的xpath从Chrome开发工具中选中该复选框。
changelog-topic
下面是DOM的外观。
我在单击复选框之前已等待线程。下面是我的代码。
//input[@name='value[326071]']
我也尝试了下面的xpath。仍然没有运气。我正在通过IntelliJ调试代码,在遍历Web元素行之前,我可以从Chrome开发者工具中选中该复选框。显然在那里。
Thread.sleep(5000);
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]']"));
assignWorkSpaceElement.click();
但是当我执行代码时,出现以下异常。
//*[contains(@class,'col-md-8')]//input[@name='value[326071]']
我在这里做错了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
据我在您的HTML中所看到的,看起来您要查找的XPath具有多个元素...
现在,如果您要遍历所有复选框并单击,可以使用以下方法完成:
excelApp.Cursor = XlMousePointer.xlWait;
但是,如果您只想要一个值= 326071的元素,则必须添加一些更特定的XPath,例如:
WebElement assignWorkSpaceElement = chromeDriver.findElements(By.xpath("//input[@name='value[326071]']"));
for (WebElement el : assignWorkSpaceElement ) {
el.click();
}
或者:
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @type='checkbox' ]"));
assignWorkSpaceElement.click();
希望这对您有所帮助!
答案 1 :(得分:1)
我认为您需要更改xpath,不要使用 thread.sleep ,而不要使用 webdriver wait。
。WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement e4 = wait.until(ExpectedConditions.visibilityOf(By.xpath("//div[@class='col-md-8- form-control-static']//following::input[1]")));
if(e4.isDisplayed())
{
e4.click();
}