从示例中找不到Selenium类名

时间:2015-05-27 19:11:03

标签: java selenium selenium-webdriver

我在stackoverflow上找到了这个selenium自动化代码。

我试图运行该程序。它给出了一个错误:

  

无法找到元素:{"方法":"类名","选择器":" gssb_e"}

我检查了该页面上的一些网页元素,看看我是否会找到班级名称gssb_e。但我没有找到任何。我想修改或更新类名,但我不确定该示例尝试访问的是什么。能帮忙吗?

WebDriver driver = new FirefoxDriver();

// Go to the Google Suggest home page
driver.get("http://www.google.com/webhp?complete=1&hl=en");

// Enter the query string "Cheese"
WebElement query = driver.findElement(By.name("q"));
query.sendKeys("Cheese");

// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
    WebElement resultsDiv = driver.findElement(By.className("gssb_e"));

    // If results have been returned, the results are displayed in a drop down.
    if (resultsDiv.isDisplayed()) {
        break;
    }
}

1 个答案:

答案 0 :(得分:1)

TL; DR:使用更好的位置策略和明确的等待。

当我手动执行相同操作时,我看不到具有gssb_e类名的元素。

相反,在这个有意创造的“混乱”中,我会尝试坚持更可靠的东西。例如,如果我们试图等到结果出现,我会,例如,明确等待,使id="search"的元素变为可见:

WebDriverWait wait = new WebDriverWait(driver, timeOut);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("search")));

换句话说,与您使用的gssb_e类名称相比,Google搜索结果页面上有更多可靠,更符合逻辑且更简单的内容,可以告诉您结果已准备就绪且可见