2011-11-16 51 views
1

我在编写Selenium 2代码,该代码通过一些标准搜索Google,然后点击结果中的链接加载此链接。这些步骤在循环中重复。Selenium 2无法点击谷歌搜索结果页面中的链接

有时候一切正常,但有时当Selenium驱动程序点击链接时,Firefox只会重定向到结果。请求的网址从未打开过。每次在Firefox HtmlUnitDriver中随机出现此错误。

下面是代码:

FirefoxDriver driver = new FirefoxDriver(); 
driver.get("http://google.com"); 

//set the search engine criteria 
engineSearchInput = driver.findElement(By.xpath("//input[@type='text']")); 
engineSearchInput.sendKeys(this.searchCriteria); 

//submit to engine 
engineSearchInput.submit(); 
WebElement link = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<WebElement>() { 
    @Override 
    public WebElement apply(WebDriver d) { 
     return d.findElement(By.xpath("//a[@href='" + searchUrl + "']")); 
    } 
}); 
link.click(); 
+0

“searchUrl”声明在哪里?请告诉我们代码。 – jamesfzhang

+0

searchUrl是我想要从结果页打开的url。例如,如果我输入搜索标准将把我的searchUrl放入第一个结果中,那么代码将搜索此URL并单击包含该URL的此链接。 –

回答

0

我发现了如何解决问题。 提交到谷歌后,我加了Thread.sleep(1500),现在一切正常。

+0

你不应该使用'Thread.Sleep'; Selenium有一个'WebDriverWait'对象,您可以使用它来等待条件满足(例如网页标题指示您期望的页面已加载)。 –