我有一个关于硒等待的问题,想知道只是进行一般等待的最佳方式。
实际上,我输入一个测试栏,然后出现一个下拉列表。 HTML中的设计很糟糕,所以我需要做的是:
1:将我的文字写在
下面的测试输入中 WebDriverWait waitAgency = new WebDriverWait(_driver, TimeSpan.FromSeconds(3));
waitAgency.Until(ExpectedConditions.ElementToBeClickable(By.Id(_webElement["agency"])))
.SendKeys("test agent");
2:然后我需要等待2秒,因为下拉可能需要加载该值。这是我需要帮助的。
3:我选择了' TAB'按钮,以便选择值:
_driver.FindElement(By.Id(_webElement["agency"])).SendKeys("TAB");
我的问题是关于第2点,在选择' TAB'之前等待2秒的最佳方法是什么?按钮?我没有什么可以等到,我只想等待2秒钟。
谢谢,
答案 0 :(得分:0)
如果你只是想等待2秒钟,(我认为这不是一个好习惯),你可以简单地暂停你的线程。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul></ul>
更好的是等待下拉元素可见。
答案 1 :(得分:0)
您可以使用以下内容:
public static void Wait(int miliseconds, int maxTimeOutSeconds = 60)
{
var wait = new WebDriverWait(Driver, new TimeSpan(0, 0, 1, maxTimeOutSeconds));
var delay = new TimeSpan(0, 0, 0, 0, miliseconds);
var timestamp = DateTime.Now;
wait.Until(webDriver => (DateTime.Now - timestamp) > delay);
}
详情here
答案 2 :(得分:0)
我的3个步骤分为3分,每个步骤分别为:
ExplicitWait
。 ExplicitWait
在那里毫无意义。因此,您可以删除ExplicitWait
。ExplicitWait
。因此,当您开始使用ExplicitWait
或xpath
查找Dropdown元素时,请引导css
。options
,selectByIndex()
或selectByValue()
使用selectByVisibleText()
。否则,如果下拉列表(自动建议)分开div
,ul
或li
,请尝试选择id
,name
或构建一个唯一的{ {1}}或xpath
点击/选择一个值。答案 3 :(得分:0)
等待硬编码2秒是不好的做法。网上有大量的信息描述了为什么,但是Thread.Sleep()
或等待的等待,而不是一个事件,但在固定的时间都属于该类别。
对于第2步,为什么不等到您要查找的元素可点击?如果它是一个autosuggest列表或类似的东西,将构建列表的HTML,以便您可以等待您想要点击的元素,然后只需单击它(而不是使用TAB)。
答案 4 :(得分:0)
您可以设置ImpicitWait。默认情况下,ImplicitWait设置为0毫秒。将其更改为您希望等待的时间。
_driver.GetDriver().Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);