Java 单击复选框“使用Selenium webdriver不工作”,即使复选框已显示
使用SeleniumWebDriver,我尝试单击复选框,但无法这样做,即使显示了元素 下面是我的代码:Java 单击复选框“使用Selenium webdriver不工作”,即使复选框已显示,java,selenium,selenium-webdriver,click,Java,Selenium,Selenium Webdriver,Click,使用SeleniumWebDriver,我尝试单击复选框,但无法这样做,即使显示了元素 下面是我的代码: JavascriptExecutor executor = (JavascriptExecutor) driver; executor.executeScript("arguments[0].scrollIntoView(true);", element1); WebElement= 新的WebDriverWait(webDriver,1000).unt
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].scrollIntoView(true);", element1);
WebElement=
新的WebDriverWait(webDriver,1000).until(ExpectedConditions.presenceOfElementLocated(By.xpath(prop.getProperty(object)));
元素。isDisplayed();//返回true
元素。getAttribute(“类型”);//返回复选框
元素。isSelected();//返回false
元素。单击();
元素。isSelected();//仍然返回false
元素已显示,但我仍然无法选中复选框。
原因可能是什么?我哪里出错了?您可以尝试移动到复选框,然后单击:
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
或者,通过JavaScript进行单击:
但是,请确保您理解您必须这样做的原因:我用与您相同的方式尝试了它,只是在C#中。我可以点击复选框,看到它在屏幕上改变了状态。但是,当我试图读取复选框的选中状态时,出现了一个异常:
stale element reference:element未附加到页面文档
如果我使用页面工厂获取WebElement,则不会发生这种情况。所以也许你应该试试Selenium的PageFactory模式。无论如何,它更干净。有几种处理方法,请参见以下内容:
actionsObj.moveToElement(element1).click().build().perform()
- 隐式等待:
driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS)JavascriptExecutor executor = (JavascriptExecutor) driver; executor.executeScript("arguments[0].scrollIntoView(true);", element1);
- 显式等待:
WebDriverWait wait=新的WebDriverWait(驱动程序,20); element1=wait.until(ExpectedConditions.elementtobelickable(By.className(“fa-stack-1x”))JavascriptExecutor executor = (JavascriptExecutor) driver; executor.executeScript("arguments[0].scrollIntoView(true);", element1);
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].scrollIntoView(true);", element1);
一个原因可能是,它没有启用。您是否已尝试
元素。isEnabled()
它已启用。element.isEnabled()返回true