我有一个HTML代码。问题是选项名称包含大量空格,直到标签关闭。
<SELECT NAME="auth" id="auth" Size=1 onChange="updatePageState()">
<OPTION value="0">Open System
</option>
<OPTION value="1">WEP
</option>
<OPTION value="2">WPA
</option>
<OPTION value="3">WPA2
</option>
我想通过在java中使用selenium来检查下拉框中是否选择了某个选项。这是我的代码:
try {
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.textToBePresentInElementValue(((By.xpath("//select [@id='auth']/option['" + Authen + "']"))), Authen));
System.out.println("Authentification is correct");
} catch (Exception x) {
System.out.println("Authentification is incorrect");
x.printStackTrace();
}
其中&#34; Authen&#34;是从文件读取的变量,对应于下拉框中的选项。
我收到以下错误消息:
org.openqa.selenium.TimeoutException:20秒后超时 等待文本(&#39; WPA2&#39;)是位于的元素的值 By.xpath://选择[@id =&#39; auth&#39;] / option [&#39; WPA2&#39;]
有关如何检查该字符串是否包含部分文本的任何帮助?我不能使用方法 .contains ,因为它的类型为boolean,而 .textToBesentinElementValue 需要将第二个属性作为String类型。
答案 0 :(得分:0)
使用不太复杂的@FindBy表达式选择webelement可能更容易,然后将该元素包装在Select中,该选项提供了获取第一个选定选项的方法。然后你可以进行比较。
看看:
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/Select.html
答案 1 :(得分:0)
使用xpath containts()
函数查找元素。如
//select[@id='auth']/option[contains(text(),'Open System')]
答案 2 :(得分:0)
您可以通过以下方式检查每个选项:
create table loc
(locations varchar(20));
insert into loc values ('alpha')
insert into loc values('beta')
insert into loc values('gamma')
insert into loc values('warehouse 1')
insert into loc values('warehouse 2')
insert into loc values('warehouse 3')
insert into loc values('warehouse 35')
select *
from loc
where locations not like 'warehouse%'
or locations = 'warehouse 35'
o/p will be
locations
alpha
beta
gamma
warehouse 35
这将返回一个布尔数组,用于检查您要查找的值是否存在于select语句中。
它有一点解决方法,但我认为它可以完成这项工作。
另外,我找不到文档,所以这是出于纯粹的意见,可能不是事实,但是值属性不应该指定文本吗?这可能是你目前的问题。