Java 如何创建通过HtmlUnitDriver和HtmlUnit headless浏览器以不同方式呈现的类别(US)下的项目列表?
如何在通过HtmlUnitDriver和HtmlUnit headless浏览器以不同方式呈现的类别(US)下创建项目列表 使用GeckoDriver/Firefox和ChromeDriver/Chrome组合,我能够创建列表并打印如下:Java 如何创建通过HtmlUnitDriver和HtmlUnit headless浏览器以不同方式呈现的类别(US)下的项目列表?,java,selenium,selenium-webdriver,htmlunit,htmlunit-driver,Java,Selenium,Selenium Webdriver,Htmlunit,Htmlunit Driver,如何在通过HtmlUnitDriver和HtmlUnit headless浏览器以不同方式呈现的类别(US)下创建项目列表 使用GeckoDriver/Firefox和ChromeDriver/Chrome组合,我能够创建列表并打印如下: 代码试用: System.setProperty("webdriver.gecko.driver", "C:/Utility/BrowserDrivers/geckodriver.exe"); WebDriver driver = new FirefoxDr
- 代码试用:
System.setProperty("webdriver.gecko.driver", "C:/Utility/BrowserDrivers/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://amzscout.net/sales-estimator"); List<WebElement> elements = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("span.cat-pick_name-in"))); for (WebElement ele:elements) System.out.println(ele.getAttribute("innerHTML")); driver.quit();
//
// 正如您已经了解到的,您正在寻找的项目是由javascript创建的。这意味着您必须启用对HtmlUnit的javascript支持
第二点是以某种方式等待javascript完成。您使用的是“AllelementsLocatedBy的可见性”,文档状态为:
检查网页上与定位器匹配的所有元素是否可见
如果没有与选择器匹配的元素(或者不是所有元素,因为javascript仍在创建新的元素),则这是正确的。正因为如此,我稍微改变了等待条件,以真正等待元素被创建
我的最终来源如下所示,并创建了您所期望的列表:
String url = "https://amzscout.net/sales-estimator";
// true enables javascript support
WebDriver driver = new HtmlUnitDriver(true);
try {
driver.get(url);
// wait until the elements are created
List<WebElement> elements =
new WebDriverWait(driver, 10)
.until(ExpectedConditions
.numberOfElementsToBeMoreThan(
By.cssSelector("span.cat-pick_name-in"), 29));
System.out.println();
for (WebElement ele : elements) {
System.out.println(ele.getAttribute("innerHTML"));
}
} finally {
driver.quit();
}
stringurl=”https://amzscout.net/sales-estimator";
//true启用javascript支持
WebDriver驱动程序=新的HtmlUnitDriver(true);
试试{
获取(url);
//等待元素被创建
列表元素=
新WebDriverWait(驱动程序,10)
.直到(预期情况)
.NumberOfElement必须大于(
通过.cssSelector(“span.cat-pick_name-in”),29);
System.out.println();
对于(WebElement ele:elements){
System.out.println(ele.getAttribute(“innerHTML”);
}
}最后{
driver.quit();
}
希望这有助于……很好的解释。工作顺利。
String url = "https://amzscout.net/sales-estimator";
// true enables javascript support
WebDriver driver = new HtmlUnitDriver(true);
try {
driver.get(url);
// wait until the elements are created
List<WebElement> elements =
new WebDriverWait(driver, 10)
.until(ExpectedConditions
.numberOfElementsToBeMoreThan(
By.cssSelector("span.cat-pick_name-in"), 29));
System.out.println();
for (WebElement ele : elements) {
System.out.println(ele.getAttribute("innerHTML"));
}
} finally {
driver.quit();
}