gpt4 book ai didi

java - 如何使用 selenium webdriver 在网页上获取 ajax 添加的内容?

转载 作者:行者123 更新时间:2023-11-29 09:00:58 25 4
gpt4 key购买 nike

我写了一段代码来从一个网站上抓取一些信息。出于抓取目的,我正在使用 Selenium Webdriver。现在我的问题是,页面上有一些信息,但最初页面上只显示 10 个条目,我可以删除这 10 个条目。但是还有一些条目只有在点击位于页面底部load more链接后才会显示。每当我单击加载更多链接时,剩余的条目将加载到页面上而不刷新整个页面(可能是ajax更新)我无法废弃这个新加载的条目。请帮忙

这是我写的代码

WebDriver driver = new  HtmlUnitDriver(BrowserVersion.FIREFOX_3_6);             
driver.get("some site url");
Thread.sleep(500);
driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("user name");
driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("password");
driver.findElement(By.xpath("//*[@id=\"login\"]//div/button")).click();
Thread.sleep(200);
if(driver.getPageSource().toString().contains("Hi "+un)) {
driver.get("http://www.somesite/m/searches/Loads/new");
driver.findElement(By.xpath("//*[@id=\"Criteria_PostingAge\"]")).clear();
driver.findElement(By.xpath("//*[@id=\"Criteria_PostingAge\"]")).sendKeys("12");
driver.findElement(By.xpath("//*[@id=\"Criteria_Origin_RawValue\"]")).clear();
driver.findElement(By.xpath("//*[@id=\"Criteria_Origin_RawValue\"]")).sendKeys(orgn[paraCount]);
driver.findElement(By.xpath("//*[@id=\"Criteria_Destination_RawValue\"]")).clear();
driver.findElement(By.xpath("//*[@id=\"Criteria_Destination_RawValue\"]")).sendKeys(destn[paraCount]);
date=new Date();
calendar=Calendar.getInstance();
calendar.setTime(date);
driver.findElement(By.xpath("//*[@id=\"Criteria_PickupFrom\"]")).clear();
driver.findElement(By.xpath("//*[@id=\"Criteria_PickupFrom\"]")).sendKeys(pickupDtFmt.format(date).toString());
calendar.add(Calendar.DAY_OF_MONTH, 1);
date=calendar.getTime();
driver.findElement(By.xpath("//*[@id=\"Criteria_PickupTo\"]")).clear();
driver.findElement(By.xpath("//*[@id=\"Criteria_PickupTo\"]")).sendKeys(pickupDtFmt.format(date).toString());
driver.findElements(By.xpath("//*[@id=\"search-entry\"]//div/input")).get(11).click();
Thread.sleep(2000);
// The code upto here will get me starting ten entries

// In order to get more entries i need to click on load more o link
driver.findElement(By.xpath("//*[@id=\"loadMore\"]")).click();
Thread.sleep(3000);

WebElement myDynamicElement = (new WebDriverWait(driver, 30))
.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"search-results\"]/div[2]/ul/li[12]")));

实际上,在单击load more anchor 链接后,我应该再获得十个条目。总共有 20 个条目。但是我只得到与第一次加载页面时相同的 10 个条目

最佳答案

我敢打赌,如果您改用 GhostDriver,您会得到不同的结果反而。没有理由使用 HtmlUnitDriver when GhostDriver can do the same and is probably more cutting edge technology .

关于java - 如何使用 selenium webdriver 在网页上获取 ajax 添加的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17469929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com