Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium:等待下拉列表更新后获取下拉列表的值_Java_Selenium_Wait_Dropdown - Fatal编程技术网

Java Selenium:等待下拉列表更新后获取下拉列表的值

Java Selenium:等待下拉列表更新后获取下拉列表的值,java,selenium,wait,dropdown,Java,Selenium,Wait,Dropdown,我有两个选择下拉列表。当我为第一个下拉列表选择一个选项时,它将自动更新第二个选项。我需要检查第二个下拉列表的值是否与第一个下拉列表的值相同 我的问题是在第二个下拉列表中有预加载的值。如果我访问它,返回值都是那些预加载的值。我需要等待下拉列表值更新,然后我将获取用于检查的值 我试图等待,希望在一段时间后,该值将被更新,但它会导致一个错误。这是我等待的代码: driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 我也不能使

我有两个选择下拉列表。当我为第一个下拉列表选择一个选项时,它将自动更新第二个选项。我需要检查第二个下拉列表的值是否与第一个下拉列表的值相同

我的问题是在第二个下拉列表中有预加载的值。如果我访问它,返回值都是那些预加载的值。我需要等待下拉列表值更新,然后我将获取用于检查的值

我试图等待,希望在一段时间后,该值将被更新,但它会导致一个错误。这是我等待的代码:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
我也不能使用它,因为元素从一开始就存在

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".z-phenotype-dropdown.z-select")));
第二个下拉列表的html代码如下所示:

<td>
<tbody>
<tr>
<select class="z-phenotype-dropdown z-select">
    <option class="z-option"> </option>
    <option class="z-option"> sample 1 </option>
    <option class="z-option"> sample 2 </option>
    <option class="z-option"> sample 3 </option>
</select>
</tr>
</tbody>
</td>

样本1
样本2
样本3

我假设下拉列表中的默认元素数为4,等待选项数大于4,如下所示。它可能对你有用

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector(".z-phenotype-dropdown.z-select>option"),4));

以下方法也可能有效:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until (ExpectedConditions.presenceOfElementLocated (By.xpath ("//option[contains(text(),'sample 1')]")));

你能给我们同样的HTML代码吗?实际上我对它做了一点修改,但是非常感谢你的想法!这就是我使用的:WebDriverWait wait=newwebdriverwait(driver,10);等待.until(ExpectedConditions.numberOfElementsToBeLessThan(By.cssSelector(“.z-epotype-dropdown.z-select>option”),3);