问题描述
我是Selenium的新手,在访问列表时出现问题,要显示该列表,您必须单击该列表然后选择特定的选项,我的选项为“ NATURAL”,我的页面具有下一个代码:>
<div id="tipoIdentificacion_panel" class="ui-selectonemenu-panel ui-widget-content ui-
corner-all ui-helper-hidden ui-shadow" style="">
<div class="ui-selectonemenu-items-wrapper" style="height:auto">
<ul class="ui-selectonemenu-items ui-selectonemenu-list ui-widget-content ui-widget
ui-corner-all ui-helper-reset">
<li class="ui-selectonemenu-item ui-selectonemenu-list-item ui-corner-all ui-state-
highlight" data-label="Seleccione...">Seleccione...</li>
<li class="ui-selectonemenu-item ui-selectonemenu-list-item ui-corner-all" data-
label="NATURAL">NATURAL</li>
<li class="ui-selectonemenu-item ui-selectonemenu-list-item ui-corner-all" data-
label="JURIDICA EXTRANJERA">JURIDICA EXTRANJERA</li>
</ul>
</div>
</div>
webdriverwait wait = new webdriverwait(driver,50);
WebElement TipoPersonas=
driver.findElement(By.xpath("//*@id="tipoPersona_panel"]/div/ul"));
List<WebElement> TipoPersona=TipoPersonas.findElements(By.tagName("li"));
for (WebElement lis : TipoPersona) {
if (lis.getText().equals("NATURAL")) {
lis.click();
}
问题是永远找不到值“ NATURAL”,因为lis.getText()
的值始终为空,并且无法进行比较,我们可以帮我吗?
解决方法
我看到的是由于变量 TipoPersonas
的xpath语法错误而导致空指针异常,您在 //*
。而且我看不到ID为 tipoPersona_panel
的任何标签。
因此,更改后的xpath将为: //div[@id = 'tipoIdentificacion_panel']//div//ul
。
进行更改后,代码如下:
WebDriverWait wait = new WebDriverWait(driver,50);
WebElement TipoPersonas=
driver.findElement(By.xpath("//div[@id='tipoIdentificacion_panel']//div//ul"));
List<WebElement> TipoPersona=TipoPersonas.findElements(By.tagName("li"));
for (WebElement lis : TipoPersona) {
if (lis.getText().equals("NATURAL")) {
lis.click();
}
}
,
感谢您回答我的问题,但是我实现了代码,问题仍然存在。我做到了:
WebDriverWait wait = new WebDriverWait(driver,50);
WebElement TipoPersonas=
driver.findElement(By.xpath("//div[@id='tipoIdentificacion_panel']//div//ul"));
List<WebElement> TipoPersona=TipoPersonas.findElements(By.tagName("li"));
System.out.println("Size Tipopersona" + TipoPersona.size());
for (WebElement lis : TipoPersona) {
System.out.println("Value is" + lis.getText());
if (lis.getText().equals("NATURAL")) {
lis.click();
}
}
输入一条消息,以了解您是否正在读取实际上是5个选项的记录数,但是GetText()仍然不会带出任何选项的数据值。
我认为这可能是因为我需要更新ChromeDriver并做到了,但是它也不起作用。
当我编译它时,会显示以下结果:
Size Tipopersona 5
Value is
Value is
Value is
Value is
Value is
:(
,请尝试输入代码:
List<WebElement> TipoPersonas=
driver.findElements(By.xpath("//div[@class='ui-selectonemenu-items-wrapper']/ul/li"));
System.out.println("Size Tipopersona: " + TipoPersonas.size());
for (WebElement lis : TipoPersonas) {
System.out.println("Value is" + lis.getText());
if(lis.getText().equalsIgnoreCase("NATURAL")) {
lis.click();
}
}
,
要简单地单击具有NATURAL值的元素,请执行此操作。您可以将其放入数组并根据需要循环单击。
WebElement TipoPersonas=driver.findElement(By.cssSelector("div.ui-selectonemenu-items-wrapper>ul>li[data-label='NATURAL']"));
TipoPersonas.click();
,
感谢您回答Arundeep。实施解决方案时
WebElement
TipoPersonas=driver.findElement(By.cssSelector("div.ui-selectonemenu-items-
wrapper>ul>li[data-label='NATURAL']"));
TipoPersonas.click();
我收到以下错误:
org.openqa.selenium.ElementNotInteractableException: element not interactable
(Session info: chrome=86.0.4240.75)
Build info: version: '3.141.59',revision: 'e82be7d358',time: '2018-11-14T08:17:03'
System info: host: 'O05P-CND23615X7',ip: '172.31.240.3',os.name: 'Windows 10',os.arch: 'amd64',os.version: '10.0',java.version: '1.8.0_251'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false,browserName: chrome,browserVersion:
86.0.4240.75,chrome: {chromedriverVersion: 86.0.4240.22 (398b0743353ff...,userDataDir: C:\Users\ADMINI~1\AppData\L...},goog:chromeOptions: {debuggerAddress:
localhost:50931},javascriptEnabled: true,networkConnectionEnabled: false,pageLoadStrategy: normal,platform: WINDOWS,platformName: WINDOWS,proxy: Proxy(),setWindowRect: true,strictFileInteractability: false,timeouts: {implicit: 0,pageLoad: 300000,script: 30000},unhandledPromptBehavior: dismiss and notify,webauthn:virtualAuthenticators: true}