0

我对反应应用程序进行了一些硒测试。chrome 和 firefox 的所有测试都通过了,没有任何错误。但是,在 IE(Internet Explorer v11)中 - 所有测试都通过,但在 tearDown 方法中失败: -

拆解方法:-

@AfterClass
public void tearDown(){
        driver.close();
        //driver.quit();
}

TestNG 错误日志截图:-

在此处输入图像描述

浏览器基类:-

public class TestBase {

public  static WebDriver driver;
public  static Properties prop;
public static EventFiringWebDriver e_driver;
public static WebEventListener eventlistener;
public static ChromeDriver chrome;
public static WebDriver driverName;
public TestBase(){
    try {
        prop = new Properties();
        FileInputStream ip = new FileInputStream("src/main/java/config/config.properties");
        prop.load(ip);
    }catch (FileNotFoundException e){
        e.printStackTrace();
    }catch (IOException e ){
        e.printStackTrace();
    }

}



public static void initialization(String browser){

    try {


    if(browser.equals("chrome")){
        System.setProperty("webdriver.chrome.driver", "C:\\Browser\\chromedriver.exe");
        driver = new ChromeDriver();
    }else if (browser.equals("firefox")){
        System.setProperty("webdriver.gecko.driver", "C:\\Browser\\geckodriver.exe");
        driver = new FirefoxDriver();
    }else if(browser.equals("ie")){
        System.setProperty("webdriver.ie.driver", "C:\\Browser\\IEDriverServer.exe");

        DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
        ieCapabilities.setCapability("nativeEvents", false);
        ieCapabilities.setCapability("unexpectedAlertBehaviour", "accept");
        ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
        ieCapabilities.setCapability("disable-popup-blocking", true);
        ieCapabilities.setCapability("enablePersistentHover", true);
        ieCapabilities.setCapability("ignoreZoomSetting", true);


        driver = new InternetExplorerDriver(ieCapabilities);
    }else if(browser.equals("edge")){
        System.setProperty("webdriver.edge.driver", "C:\\Browser\\MicrosoftWebDriver.exe");
        EdgeOptions options = new EdgeOptions();
        options.setCapability("unexpectedAlertBehaviour", "accept");
        driver = new EdgeDriver(options);
        e_driver = new EventFiringWebDriver(driver);
        //now create object of event listner handler  to register it with eventfiring web driver
        eventlistener = new WebEventListener();
        e_driver.register(eventlistener);
        driverName = driver;
        driver = e_driver;
    }
    if(!browser.contains("edge")){

        e_driver = new EventFiringWebDriver(driver);
        //now create object of event listner handler  to register it with eventfiring web driver
        eventlistener = new WebEventListener();
        e_driver.register(eventlistener);
        driverName = driver;
        driver = e_driver;

        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT, TimeUnit.SECONDS);
    }
    driver.get(prop.getProperty("url"));
} catch (TimeoutException e){

if (driver != null)
    driver.close();
    //driver.quit();

        e.printStackTrace();


    }

    catch (Exception e){

        e.printStackTrace();


    }



}

控制台错误日志

Starting MSEdgeDriver ... (...) on port 2440
Only local connections are allowed.
Please protect ports used by MSEdgeDriver and related test frameworks to prevent access by malicious code.
org.openqa.selenium.WebDriverException: unknown error: cannot find MSEdge binary
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T14:04:26.12Z'
System info: host: '<host>', ip: '<ip>', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_221'
Driver info: driver.version: EdgeDriver
remote stacktrace: Backtrace:
    Ordinal0 [0x00007FF605E27542+1930562]
    Ordinal0 [0x00007FF605D8BCC2+1293506]
    Ordinal0 [0x00007FF605CF0801+657409]
    Ordinal0 [0x00007FF605C60F1F+69407]
    Ordinal0 [0x00007FF605C5EF02+61186]
    Ordinal0 [0x00007FF605C87C9D+228509]
    Ordinal0 [0x00007FF605C850EF+217327]
    Ordinal0 [0x00007FF605C6702F+94255]
    Ordinal0 [0x00007FF605C681EE+98798]
    Ordinal0 [0x00007FF605DAA6A1+1418913]
    GetHandleVerifier [0x00007FF605EE8AF9+656601]
    GetHandleVerifier [0x00007FF605EE8891+655985]
    GetHandleVerifier [0x00007FF605EF095C+688956]
    GetHandleVerifier [0x00007FF605EE92D3+658611]
    Ordinal0 [0x00007FF605DA069E+1377950]
    Ordinal0 [0x00007FF605DACB46+1428294]
    Ordinal0 [0x00007FF605DAB9BD+1423805]
    BaseThreadInitThunk [0x00007FFF02907974+20]
    RtlUserThreadStart [0x00007FFF0402A271+33]

    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.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
    at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:141)
    at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:130)
    at com.testapp.base.TestBase.initialization(TestBase.java:73)
    at com.testingapp.testcases.BusyIndicatorTest.setUp(BusyIndicatorTest.java:48)
    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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146)
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:166)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
    at org.testng.TestRunner.privateRun(TestRunner.java:744)
    at org.testng.TestRunner.run(TestRunner.java:602)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
    at org.testng.SuiteRunner.run(SuiteRunner.java:289)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
    at org.testng.TestNG.runSuites(TestNG.java:1144)
    at org.testng.TestNG.run(TestNG.java:1115)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
driver  : InternetExplorerDriver: internet explorer on WINDOWS (d8509abb-d16b-4872-bdc2-010789af308c)
Trying to find Element By : By.xpath: //div[@id='hamburger_menu']
Exception occured: org.openqa.selenium.NoSuchSessionException: session d8509abb-d16b-4872-bdc2-010789af308c does not exist
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T14:04:26.12Z'
System info: host: '<host>', ip: '<ip>', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_221'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities {acceptInsecureCerts: false, browserName: internet explorer, browserVersion: 11, javascriptEnabled: true, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), se:ieOptions: {browserAttachTimeout: 0, elementScrollBehavior: 0, enablePersistentHover: true, ie.browserCommandLineSwitches: , ie.ensureCleanSession: false, ie.fileUploadDialogTimeout: 3000, ie.forceCreateProcessApi: false, ignoreProtectedModeSettings: true, ignoreZoomSetting: true, initialBrowserUrl: http://localhost:7136/, nativeEvents: true, requireWindowFocus: false}, setWindowRect: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: accept}
Session ID: <id>

我试过的: -

  1. WebDriver driver = null在浏览器案例类中初始化
  2. 控制面板 -> Internet 选项 -> 安全 -> 禁用所有四个区域的“受保护区域”
  3. ieCapabilities.setCapability("ignoreProtectedModeSettings", true);这是 INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS 的别名
  4. if(driver != null) { driver.close(); }

我已经尝试了其他堆栈溢出问题中提到的所有这些,但是,我最终遇到了同样的错误。

如果有更多信息,请告诉我。关于代码是必需的。

编辑:

我注意到我的新 InternetExplorerDriver 实例已被删除

driver = new InternetExplorerDriver (ieCapabilities);

这被击中了,因为 DesiredCapabilities 已被弃用。

前: -

DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
driver = new InternetExplorerDriver(ieCapabilities);

现在: -

InternetExplorerOptions IEoptions = new InternetExplorerOptions();
IEoptions.setCapability("ignoreProtectedModeSettings", true);
driver = new InternetExplorerDriver(IEoptions);

这固定了删除线。


当我单独运行 IE 测试集时,即没有 chrome、firefox 和边缘测试。我可以看到所有测试都通过并且在拆卸方法中没有错误。我无法弄清楚原因!

4

0 回答 0