以下代码使用 Selenium 库。问题是跟踪命令永远不会被打印,因为它应该被打印 n 次直到元素变得可见。
WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(10), TimeSpan.FromMilliseconds(500));
driver.Navigate().GoToUrl("test.com");
// Thread.Sleep(1000);
wait.Until(_ =>
{
Trace.WriteLine("aa");
return ExpectedConditions.ElementIsVisible(By.XPath("//button[@data-a-target='change-country-button']"));
});
当我激活注释行时,它会起作用(大多数时候)。
wait
对象最好仅与ExpectedConditions
结合使用,并且ExpectedConditions
不能在循环中工作。
因此,
Until
中的两行不会在任何循环中执行,aa也不会按照您的预期在循环中打印。
理想情况下,包含 WebDriverWait 的代码行应该是:
WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(5));
IWebElement myElement = wait.Until(e => e.FindElement(By.XPath("//button[@data-a-target='change-country-button']")));
一行:
IWebElement myElement = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(5)).Until(e => e.FindElement(By.XPath("//button[@data-a-target='change-country-button']")));