2017-04-04 82 views
0

我想創建一個簡單的測試,只需打開頁面並驗證其標題。我認爲它不能再簡單,但是...我的測試中打開在當前打開Chrome瀏覽器的新選項卡上卻失敗driver.get(myUrl);org.openqa.selenium.NoSuchSessionExceptionNoSuchSessionException當啓動chromedriver

我試圖升級和降級chromedriver和升級降級硒,但沒有運氣遠。目前我在selenium-java 3.3.1,chromedriver 2.28和chrome 57.0.2987.98上。任何幫助讚賞。

獎金問題,上次我用chromedriver打開了一個新的瀏覽器窗口,有什麼辦法可以回到那個上?我更喜歡我的測試在新窗口而不是新標籤。

public class MyExampleTest { 
    private String baseUrl; 
    private WebDriver driver; 

    @Before 
    public void openBrowser() { 
     baseUrl = "http://myurl/"; 
     System.setProperty("webdriver.chrome.driver", "C:\\Projects\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
     driver.get(baseUrl); 
    } 

    @Test 
    public void pageTitleAfterSearchShouldBeThere() throws IOException { 
     assertEquals("The page title should be this at the start of the test.", "my title", driver.getTitle()); 
    } 
} 

堆棧跟蹤:

org.openqa.selenium.NoSuchSessionException: no such session 
    (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 13 milliseconds 
Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10 09:10:29 +0000' 
System info: host: 'XXXXXXXXXXXXXXX', ip: 'xxx.xxx.xxx.xx', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121' 
Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{message=unknown error: Chrome failed to start: crashed 
    (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64), platform=ANY}] 
Session ID: 359ce80c1b82e53fffae055451228404 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638) 
    at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:325) 
    at ec_selenium.CapExampleTest.openBrowser(CapExampleTest.java:58) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
+0

在這裏發佈您的完整代碼。 – kushal

+0

你能不能也粘貼堆棧跟蹤? – Mikhail

回答

0

你可能已經搞砸了imports。試試下面的代碼,對我來說工作得很好。

import static org.junit.Assert.assertEquals; 

import java.io.IOException; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 

public class MyExampleTest { 
    private String baseUrl; 
    private WebDriver driver; 

    @Before 
    public void openBrowser() { 
     baseUrl = "http://facebook.com/"; 
     System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
     driver.get(baseUrl); 
     driver.manage().window().maximize(); 
    } 

    @Test 
    public void pageTitleAfterSearchShouldBeThere() throws IOException { 
     System.out.println(driver.getTitle()); 
     assertEquals("The page title should be this at the start of the test.", "Facebook - Log In or Sign Up", driver.getTitle()); 
    } 

    @After 
    public void closeBrowser(){ 
     try{ 
     driver.quit(); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

這將打開一個new window每次不是已經打開的瀏覽器中的新標籤。

+0

你在同一個版本的硒/鉻/鉻金屬?對我來說,你的代碼會拋出NoSuchSession異常,也會打開一個新的標籤,而不是一個新的瀏覽器窗口。和我上面一樣。 – tom

+0

是的我已經在你提到的問題中試過這個版本。 –