【问题标题】:How to get ajax added contents on web page using selenium webdriver?如何使用 selenium webdriver 在网页上获取 ajax 添加的内容?
【发布时间】:2013-07-04 12:07:59
【问题描述】:

我已经编写了一个代码来从其中一个网站中删除一些信息。出于报废目的,我使用Selenium Webdriver。现在我的问题是,一个页面上有一些信息,但最初只有ten entries 显示在页面上,我可以删除这十个条目。但是只有在单击位于the bottom of the pageload more 链接后才会显示更多条目。每当我单击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]"))); 

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2011-03-08
      相关资源
      最近更新 更多