当前位置: 首页 > 知识库问答 >
问题:

预期条件失败:正在等待元素可单击:按。id:cboMotivo

谢誉
2023-03-14

我试图通过ID在页面上查找元素,但即使元素有ID,selenium也会显示无法找到元素的消息。

我创建了一个名为InvalidLogin的类,它扩展了BaseClass类。在InvalidLogin类中,有一个名为fillDocmentOps的方法。在这个方法中,我试图通过ID(cboMotivo)找到元素,但我不能。下面是类代码和屏幕打印。

public class BaseClass {

WebDriver driver;
@BeforeClass
public void setupApplication() {
    Reporter.log("Instanciando o navegador", true);

    System.setProperty("webdriver.chrome.driver", "e:\\chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("http://10.5.9.45/BkoMais_Selenium/");

    Reporter.log("Aplicação inicializada", true);
}
    @AfterClass
    public  void closeApplication() {

        try {
            Thread.sleep(5000);
            //driver.quit();
            Reporter.log("Sessão do navegador finalizada",true);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }   
    }       
}

public class InvalidLogin extends BaseClass {

@Test(description = "Logando na aplicação")
public void logarBkoMais() {
    try {
        driver.findElement(By.id("matricula_I")).sendKeys("844502");
        driver.findElement(By.id("senha_I")).sendKeys("Bcc201707");
        driver.findElement(By.id("bt_entrar")).click();
        // driver.navigate().back();
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
@Test(description = "Acessando a estratégia BackOffice >> NET >> Facilidades")
public void logarEstrategiaNetFacilidades() {

    driver.findElement(By.id("mn_backoffice")).click();
    driver.findElement(By.id("mn_bkoffice_prod_217")).click();
    driver.findElement(By.id("mn_bkoffice_est_179")).click();

}

@Test(description = "Registro >> Novo")
public void registroNovo() {
    driver.findElement(By.id("mn_registro")).click();
    driver.findElement(By.id("mn_novo_caso")).click();
}
@Test(description = "Facilidades >> Tratamento Os")
public void preencherCamposTratamentoOs() {

    WebDriverWait wait = new WebDriverWait(driver, 30);
    WebElement analiseC = wait.until(ExpectedConditions.elementToBeClickable(By.id("cboMotivo")));
    driver.findElement(By.id("cboMotivo")).click(); 
}

}

cboMotivo元素ID控制台Eclipse错误

共有1个答案

鲁德佑
2023-03-14

这个问题击中了我,这是非常罕见的,因为我发现添加time.sleep(2)允许Selenium火狐驱动程序找到元素,我找不到引擎盖下发生了什么。

time.sleep(2)
            try:
                action_button = WebDriverWait(driver, TIMEOUT).until(
                    EC.visibility_of_element_located((By.ID, "id_btn"))
                )
                action_button.click()

如果没有明确的睡眠,它是不起作用的(2)

 类似资料: