C#Selenium:等待下拉列表加载/显示值?

时间:2018-10-17 08:20:25

标签: c# selenium selenium-webdriver selenium-chromedriver

我在VS中有一个使用C#和Selenium的程序,可以将数据输入到下拉文本框中。

但是该程序出现错误,因为在单击Enter之前需要花费很长时间显示该值。

我还使用ElementExists,ElementVisible,ElementClickable方法。

有没有办法等到下拉菜单在单击Enter之前显示值?(有没有办法等到下拉菜单加载?)

我还增加了Thread.Sleep的持续时间,但这太不一致了。

感谢您能帮助我。预先感谢。

var dropDown= wDriver.FindElements(By.XPath("//input[contains(@aria, 'false')and not(@class)]"));

dropDown.SendKeys(value);

Thread.Sleep(2000);

dropDown.SendKeys(Keys.Enter);

注意:(我不使用SelectElement,因为下拉元素只能通过Xpath访问。)

1 个答案:

答案 0 :(得分:0)

您是否已检查过waitForElementPresent命令。

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[contains(@aria, 'false')and not(@class)]")));

或者您可以使用“等到预期条件”。

wait.until(
    ExpectedConditions.presenceOfNestedElementsLocatedBy(By.xpath(<"//input[contains(@aria, 'false')and not(@class)]">), By.tagName("input"))
)