[英]Wait- Expected conditions not working for auto-suggestion within Yahoo Finance page using Selenium and Java
如果 webelement 在等待条件内被识别,则下面的代码无法识别它们的列表。 我收到一个超时异常,无法识别指定 xpath 的元素。
但是,如果我在没有等待条件的情况下直接访问元素,则将值分配给列表变量,为什么会这样?
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://www.finance.yahoo.com");
driver.manage().window().maximize();
driver.findElement(By.xpath("//input[@id='yfin-usr-qry']")).sendKeys("nclh");
WebDriverWait wait = new WebDriverWait(driver,5);
List<WebElement>dd_list= wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//ul[@class='modules_list__1zFHY']/li")));
System.out.println(dd_list.size());
for(WebElement ele : dd_list) {
if (ele.getText().contains("NCLH.VI")) {
System.out.println("i got the element");
}
}
雅虎财经网站包含支持ReactJS 的元素。 因此,您需要引入WebDriverWait以使document.readyState
complete
,您可以使用以下Locator Strategies :
代码块:
driver.get("https://www.finance.yahoo.com"); new WebDriverWait(driver, 120).until(webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete")); WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='yfin-usr-qry']"))); element.click(); element.sendKeys("nclh"); System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//ul[@class='modules_list__1zFHY']//li[@data-type='quotes']"))).size())
控制台输出:
6
浏览器快照:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.