2013-04-16 3 views
2

Я использую стандартную exsample: cucumber-jvm-selenium-exampleогурца пример JVM селен

Когда я запускаю тест:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running com.michalvich.cucumber.selenium.example.GoogleSearchTest 
Feature: Search on Google 
    As an user 
    I want to search on Google 
    So that I can see results 

    Scenario: results are shown      # com\michalvich\cucumber\selenium\example\GoogleSearch.feature:6 
    Given the page is open "http://www.google.com" # GoogleSearchScenario.the_page_is_open(String) 
[1A Given the page is open "http://www.google.com" # GoogleSearchScenario.the_page_is_open(String) 
    When I search for "Cucumber"     # GoogleSearchScenario.I_search_for(String) 
[1A When I search for "Cucumber"     # GoogleSearchScenario.I_search_for(String) 
     org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q 
     For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
     Build info: version: '2.28.0', revision: '18309', time: '2012-12-11 15:53:30' 
     System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_17' 
     Driver info: driver.version: HtmlUnitDriver 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:749) 
     at org.openqa.selenium.By$ByName.findElement(By.java:292) 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1247) 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1244) 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:987) 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1244) 
     at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:393) 
     at com.michalvich.cucumber.selenium.example.GoogleSearchScenario.I_search_for(GoogleSearchScenario.java:26) 
     at ?.When I search for "Cucumber"(com\michalvich\cucumber\selenium\example\GoogleSearch.feature:8) 

Но если я меняю драйвер:

System.setProperty("webdriver.chrome.driver", "path\\to\\chromedriver.exe"); 
driver = new ChromeDriver(); 

Он работает.

+0

Как вы выполнение тестов? – Njax3SmmM2x2a0Zf7Hpd

ответ

0

Вы должны ждать Google Ajax для обновления, в противном случае вы будете иметь только Google возвращение в качестве заголовка страницы

@When("^I search for \"([^\"]*)\"$") 
public void I_search_for(String search) throws Throwable { 
    WebElement element = driver.findElement(By.name("q")); 
    element.sendKeys(search); 
    element.submit(); 

    // Google ajax wait for 5 seconds 
    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; 
     } 
    } 
} 
+0

это правда, но ожидание фиксированного количества времени - плохой дизайн, рассмотрим что-то вроде 'fluentWait', которое обсуждается здесь: https://stackoverflow.com/questions/12858972/how-can-i-ask-the-selenium -webdriver-to-wait-for-few-seconds – Dude

+0

Я считаю, что проблема не с ожиданием, а с объектом-драйвером, который по умолчанию устанавливается в htmlunit. –

+0

Проблема, похоже, что-то с конкретной реализацией HtmlUnitDriver для обработки в этом сценарии, который отлично работает с реализацией драйвера Chrome. –

Смежные вопросы