SeleniumWebDriver中无法访问的代码

时间:2018-06-07 17:59:56

标签: java selenium selenium-webdriver

我的Java脚本中的元素未附加到页面文档,以便使用SeleniumWebDriver实现自动化。

我搜索了互联网,发现下面的脚本解决了错误元素没有附加到页面文档。

boolean breakIt = true;

    while (true) {

        breakIt = true;

        try {

            Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
            acao.selectByValue("519");

        } catch (Exception e) {

            if (e.getMessage().contains("element is not attached")) {

                breakIt = false;
            }
        }
    }

我继续自动化过程,在上面的脚本之后,我添加了下面的代码,在DropDown列表中选择一个选项。

Select status = new Select(driver.findElement(By.id("cboStatus")));

此时Eclipse显示错误消息:无法访问的代码。

我搜索了互联网但没有找到任何关于SeleniumWebDriver的错误消息。

以下是Eclipse显示的完整代码和错误消息。

public class validarStatus {

static WebDriver driver;

@Before
public void setUp() throws Exception {

    System.setProperty("webdriver.chrome.driver", "E:\\Selenium\\chromedriver.exe");

}

@Test
public void logarBkoMais() throws InterruptedException {

    WebDriver driver = new ChromeDriver();
    driver.get("http://10.5.9.45/BKOMais_S86825EstrategiaBackOfficeClaroFixo");
    driver.manage().window().maximize();

    // Logar BkoMais
    driver.findElement(By.id("matricula_I")).sendKeys("844502");
    driver.findElement(By.id("senha_I")).sendKeys("Pw34Jdt#*");
    driver.findElement(By.id("bt_entrar")).click();

    // Logar na Estratégia
    driver.findElement(By.id("mn_backoffice")).click();
    driver.findElement(By.id("mn_bkoffice_prod_203")).click();// Produto
    driver.findElement(By.id("mn_bkoffice_est_57")).click();// Estratégia

    // Selecionado a atividade
    Select atividade = new Select(driver.findElement(By.id("cboAtividade")));
    atividade.selectByIndex(3);

    // Registro >> Novo
    Thread.sleep(500);
    driver.findElement(By.id("mn_registro")).click();
    driver.findElement(By.id("mn_novo_caso")).click();

    // Cod Os Estratégia VREL
    String CodOs = driver.findElement(By.xpath("//*[@id=\"content\"]/div[1]/fieldset[1]/div[2]/div[3]/span"))
            .getText();
    System.out.println(CodOs);

    // Campo Análise de Contrato
    Select analiseContrato = new Select(driver.findElement(By.id("cboMotivo")));
    analiseContrato.selectByIndex(5);

    // Campo Ação
    boolean breakIt = true;

    while (true) {

        breakIt = true;

        try {

            Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
            acao.selectByValue("519");

        } catch (Exception e) {

            if (e.getMessage().contains("element is not attached")) {

                breakIt = false;
            }
        }
    }

    Select status = new Select(driver.findElement(By.id("cboStatus")));
}

@After
public void tearDown() throws Exception {

}}

Unreachable Code

1 个答案:

答案 0 :(得分:0)

正如我所理解的那样,不能保证编译器上面的代码会运行while语句。只有在抛出异常并且while循环中断时才会运行它。此外,您的breakIt根本没有变化。我认为这个代码是正确的:

while (breakIt) {

    breakIt = true;

    try {

        Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
        acao.selectByValue("519");

    } catch (Exception e) {

        if (e.getMessage().contains("element is not attached")) {

            breakIt = false;
        }
    }
}