如何使用selenium webdriver在网页上添加ajax添加内容?

时间:2013-07-04 12:08:00

标签: java javascript ajax web-scraping selenium-webdriver

我已经编写了一个代码来废弃其中一个网站的某些信息。为了报废,我正在使用Selenium Webdriver。现在我的问题是,页面上有一些信息,但最初只有ten entries显示在页面上,我可以废弃这10个条目。但是,只有在点击位于load more的{​​{1}}链接后,才会显示更多条目。每当我点击the bottom of the page时,剩余的条目将被加载到页面load more link整个页面(with out refreshing)我无法废弃这些新加载的条目。请帮忙

这是我写的代码

probably ajax update

实际上在点击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]"))); 锚链接之后,我应该再获得十个条目。共有20个参赛作品。但是我第一次加载页面时只得到了10个条目

1 个答案:

答案 0 :(得分:0)

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