我正在尝试在类@FindBy
中使用注释Select
实现Page Object。在Eclipse中,它显示了以下消息:
类型By中的方法id(String)不适用于参数(WebElement)。
我不知道为什么会出现此消息。按照下面的代码和错误图像。
Class FaturamentoGeTratamentoOsPage
public class FaturamentoGeTratamentoOsPage {
WebDriver driver;
@FindBy(id = "cboMotivo")
WebElement CBOMotivo;
public FaturamentoGeTratamentoOsPage(WebDriver driver) {
this.driver = driver;
}
public void preencherCampoMotivo(String CampoMotivo) {
// Campo Motivo
WebElement campoMotivo = driver.findElement(By.id(CBOMotivo));
Select slcMotivo = new Select(campoMotivo);
slcMotivo.selectByVisibleText(CampoMotivo);
}
public void preencherCampoSubmotivo(String CampoSubMotivo) throws Exception {
}
}
Class FaturamentoGeConectividadeFacilidadesTest
public class FaturamentoGeConectividadeFacilidadesTest {
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 selecionarFacilidades() throws Exception {
// Logando na aplicação
LogarBkoMaisPage login = new LogarBkoMaisPage(driver);
login.logar("844502", "Bcc201707");
// BackOffice >> FaturamentoGe >> Conectividade
FaturamentoGeConectividadeFacilidadesPage menu = new FaturamentoGeConectividadeFacilidadesPage(driver);
menu.logarFaturamentoGeConectividade();
//Registro >> Novo caso
RegistroNovoCasoPage reg = new RegistroNovoCasoPage(driver);
reg.registrarCaso();
//Preencher campos
FaturamentoGeTratamentoOsPage campo = new FaturamentoGeTratamentoOsPage(driver);
campo.preencherCampoMotivo(" Concluido ");
}
@After
public void tearDown() throws Exception {
Thread.sleep(5000);
driver.quit();
}
}
答案 0 :(得分:1)
您需要添加pagefactory.init
来初始化webelement。
public FaturamentoGeTratamentoOsPage(WebDriver driver) { this.driver = driver;
PageFactory.initElements(driver, this);
}
不使用以下行..因为CBOMotive直接返回给你一个webelement
WebElement campoMotivo = driver.findElement(By.id(CBOMotivo));
答案 1 :(得分:0)
您收到错误是因为By.id()
需要String
,而不是WebElement
。您已将CBOMotivo
定义为WebElement
,但将其视为String
。
以下是正确的用法
WebElement campoMotivo = driver.findElement(By.id("cboMotivo"));
你想要的是
public void preencherCampoMotivo(String CampoMotivo) {
// Campo Motivo
Select slcMotivo = new Select(CBOMotivo);
slcMotivo.selectByVisibleText(CampoMotivo);
}