【问题标题】:java.lang.ClassCastException: org.openqa.selenium.By$ById cannot be cast to org.openqa.selenium.WebElementjava.lang.ClassCastException: org.openqa.selenium.By$ById 不能转换为 org.openqa.selenium.WebElement
【发布时间】:2018-01-17 15:48:27
【问题描述】:

我尝试在 selenium webdriver 中使用带有注释 By 的页面对象进行自动化测试,但 de Eclipse 显示以下消息错误:

java.lang.ClassCastException: org.openqa.selenium.By$ById 无法转换为 org.openqa.selenium.WebElement

关注代码:

类:AcertoPerfilTramentoOs

public class AcertoPerfilTratamentoOs {

    static WebDriver driver;

    By cidade = By.id("cboCidade");
    By tipoOcorrencia = By.id("txtTipoOcorrencia");

    public AcertoPerfilTratamentoOs(WebDriver driver) {
        this.driver = driver;
    }
    public void camposCidade(String CampoCidade) {
        Select slc = new Select((WebElement) cidade);
        slc.selectByVisibleText(CampoCidade);
    }
    public void campoTipoOcorrencia(String tipOcorrencia) {
        driver.findElement(tipoOcorrencia).sendKeys("reclamação");
    }
}

类:ValidarEstrategiaAcertoPerfilLancamentoManualTest

public class ValidarEstrategiaAcertoPerfilLancamentoManualTest {

    static WebDriver driver;

    @Before
    public void setUp() throws Exception {  
        SelecionarNavegador nav = new SelecionarNavegador();
        driver = nav.iniciarNavegador("chrome", "http://10.5.9.45/BkoMais_Selenium/");
    }

    @Test
    public void logarAplicacao() {      
        try {
            //Login Page
            LogarBkoMaisPage login = new LogarBkoMaisPage(driver);
            login.logar("844502","Bcc201707");

            //Acessar a estratégia
            ProdutoNetEstrategiaAcertoDePerfilLancamentoManual AcertoPerfil = 
                    new ProdutoNetEstrategiaAcertoDePerfilLancamentoManual(driver);
            AcertoPerfil.AcessarEstrategia();

            //Registro Novo
            RegistroNovoCasoPage novoCaso = new RegistroNovoCasoPage(driver);
            novoCaso.registrarCaso();

            //Preenchendo o campo OCORRÊNCIA
            RandowNumber rn = new RandowNumber(driver);
            rn.randomNumber();

            //Preencher Campos da tela Tratamento Os
            AcertoPerfilTratamentoOs po = new AcertoPerfilTratamentoOs(driver);
            po.camposCidade(" ALMIRANTE TAMANDARE ");
            po.campoTipoOcorrencia("reclamação");

        }catch(Exception e) {
            System.out.println("Mensagem de erro: " +e);
        }
    }

    @After
    public void tearDown() throws Exception {
        //Thread.sleep(5000);
        //driver.quit();
    }
}

ValidarEstrategiaAcertoPerfilLancamentoManualTest

【问题讨论】:

    标签: java selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    错误信息告诉你出了什么问题:org.openqa.selenium.By$ById cannot be cast to org.openqa.selenium.WebElement 我假设这是由以下原因引起的:Select slc = new Select((WebElement) cidade); 尝试跟随(假设 Select 有一个使用 WebElement 的构造函数: Select slc = new Select(driver.findElement(cidade));

    【讨论】:

    • 不客气!对于未来的学习:注意错误信息告诉你的内容。如果你不知道它是什么意思,谷歌它。这样你就可以自己解决很多事情。否则你仍然可以问 StackOverflow ;)
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2019-05-08
    • 2011-12-01
    • 2016-09-20
    相关资源
    最近更新 更多