我在网页中有一个List
WebElements
具有特定的高度宽度(我不知道),我想要打印该列表中显示的所有元素。这是我的代码:
public CinemaModule CinemasName() throws InterruptedException
{
List<WebElement> cinemalist = driver.findElements(By.cssSelector("h4.media-heading"));
System.out.println("Total cinemas are " + cinemalist.size());
System.out.println("Cinemas names are:- ");
for (int i = 0; i < cinemalist.size(); i++)
{
System.out.println(cinemalist.get(i).getText());
return new CinemaModule(driver);
}
}
这段代码给了我count = 32
,但是当我得到文本时,它只打印前4个电影院文本(可以看到),而对于其余的电影院,它打印为空(无文本),因为其余的电影院列表都在滚动。要查看那些电影院名称(WebElement),我们必须滚动。
如何打印所有32个影院的列表?
答案 0 :(得分:1)
您可以使用JavaScriptExecuter的executeScript()方法将特定元素滚动到视图中,然后使用getText()方法从元素中获取文本。
尝试以下代码,
public CinemaModule CinemasName() throws InterruptedException
{
List<WebElement> cinemas = driver.findElements(By.cssSelector("h4.media-heading"));
System.out.println("Total cinemas are " + cinemas.size());
System.out.println("Cinemas names are:- ");
JavascriptExecutor jse = (JavascriptExecutor) driver;
for (WebElement cinema : cinemas)
{
jse.executeScript("arguments[0].scrollIntoView(true);", cinema);
System.out.println(" " + cinema.getText());
}
return new CinemaModule(driver);
}
答案 1 :(得分:-1)
如果没有能够看到网站本身,我不确定,但看起来一个大问题是你在循环完成之前从这个函数返回。您在for
循环内返回。在for
循环后移动它,看看是否能解决问题。
public CinemaModule CinemasName() throws InterruptedException
{
List<WebElement> cinemalist = driver.findElements(By.cssSelector("h4.media-heading"));
System.out.println("Total cinemas are " + cinemalist.size());
System.out.println("Cinemas names are:- ");
for (int i = 0; i < cinemalist.size(); i++)
{
System.out.println(cinemalist.get(i).getText());
}
return new CinemaModule(driver);
}
我不知道CinemaModule
是什么,但您没有在此功能中设置任何内容,因此我不确定它返回的是什么。如果您所做的只是打印电影院列表,您不应该返回任何内容,这样您就可以将返回类型更改为void
...但我无法看到您的代码,所以也许你需要这个???