我正在尝试从下拉列表中选择一个值。我已经检查了所有与此相关的帖子,但找不到解决方法。
这是我的HTML代码下拉列表:
<select class="select2 visible" data-val="true" data-val-number="The field ClientId must be a number." id="ClientId" name="ClientId" tabindex="-1" title="" style="display: none;">
<option value="">Client</option>
<option value="22">ABC</option>
<option value="7">ABC1</option>
<option value="18">ABC2</option>
<option value="27">ABC3</option>
<option value="26">ABC4</option>
<option value="31">ABC5</option>
<option value="12">ABC6</option>
<option value="19">ABC7</option>
<option value="72">DGX Client</option>
<option value="57">DS Sampler</option>
<option value="25">Group123</option>
</select>
我在Selenium Webdriver中编写的用于获取值的代码:
@FindBy(id="ClientId")
WebElement clientDropDown;
waitTime = new WebDriverWait(driver,20);
waitTime.until(ExpectedConditions.visibilityOf(clientDropDown));
Select client=new Select(clientDropDown);
client.selectByVisibleText("DGX Client");
错误:org.openqa.selenium.TimeoutException:预期条件失败:正在等待[[ChromeDriver:XP上的chrome(6fa8cbb25476bea9b789aff19a6edf)]-> id:ClientId](以30秒钟的间隔(500毫秒)进行了可见性)
答案 0 :(得分:1)
根据此处的假设进行操作。
看看您的select
如何被display: none
样式隐藏:
<select ... style="display: none;">
^^^^^^^^^^^^^^^^^^^^^
我认为这是因为实际上它在UI上的表示方式是不同的,并且只要实际的下拉表示发生更改,此select
就会由javascript进行底层操作。
在这种情况下,您可以检查实际的下拉菜单,然后使用click()
命令的组合来打开下拉菜单并选择所需的选项(请注意,您将无法使用{在这种情况下,{1}}类只能用于Select
个元素。)
或者,您可以使select
元素可见并继续:
select