远程浏览器未响应 getCurrentUrl

问题描述 投票:0回答:3

我在等待 URL 更改时收到以下错误。

问题是间歇性的,我并不总是遇到错误。所以如果我简单地说

getCurrentURL
它就通过了。我想这与在 expctedConditions 中多次调用它有关。

wait.until(ExpectedConditions.urlContains("cart-complete")));

浏览器:火狐45.0

Wedriver::2.52.0

堆栈跟踪

原因:org.openqa.selenium.WebDriverException:远程浏览器执行了 不响应 getCurrentUrl 构建信息:版本:'2.52.0',修订版: '4c2593cfc3689a7fcd7be52549167e5ccc93ad28',时间:'2016-02-11 11:22:43' 系统信息:主机:'ip-172-31-41-152',ip:'172.31.41.152', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.38-16.33.amzn1.x86_64',java.version:'1.8.0_45' 驱动程序信息: 驱动程序版本:RemoteWebDriver org.openqa.selenium.remote.RemoteWebDriver.getCurrentUrl(RemoteWebDriver.java:328) org.openqa.selenium.support.ui.ExpectedConditions$4.apply(ExpectedConditions.java:131) org.openqa.selenium.support.ui.ExpectedConditions$4.apply(ExpectedConditions.java:126) org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:238) uk.co.pharmica.libs.Page.waitUntilURLContains(Page.java:112) uk.co.pharmica.pages.buyer.CartCompletePage。(CartCompletePage.java:24) sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:422) org.openqa.selenium.support.PageFactory.instantiatePage(PageFactory.java:129) org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:64) uk.co.pharmica.tests.Buyer.test3DSecure(Buyer.java:66) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:497) org.testng.internal.MethodInitationHelper.invokeMethod(MethodInitationHelper.java:85) org.testng.internal.Invoker.invokeMethod(Invoker.java:639) org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) org.testng.TestRunner.privateRun(TestRunner.java:774) org.testng.TestRunner.run(TestRunner.java:624) org.testng.SuiteRunner.runTest(SuiteRunner.java:359) org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) org.testng.SuiteRunner.run(SuiteRunner.java:261) org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) org.testng.TestNG.runSuitesSequentially(TestNG.java:1191) org.testng.TestNG.runSuitesLocally(TestNG.java:1116) org.testng.TestNG.run(TestNG.java:1024) org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:281) org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:75) org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:121) org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290) org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242) org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

selenium selenium-webdriver
3个回答
0
投票

使用这种方式我解决了我的问题

wd.navigate().to(URL)
URL正在打开我的网站。

if (browser.equalsIgnoreCase("ie")) {
        System.out.println(" Executing on IE");
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        cap.setBrowserName("ie");
        String Node = "http://192.168.2.5:5555/wd/hub";
        wd = new RemoteWebDriver(new URL(Node), cap);
        wd.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        // Launch website
        wd.navigate().to(URL);
}

0
投票

没有更多上下文,我假设您有 2 个双引号“”cart-complete”。


0
投票

我最近观察到同样的情况,其中脚本开始在 BrowserStack 上失败并出现上述错误。

在调试和深入研究根本原因时,我偶然发现了此页面https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.openqa.selenium.By.Remotable.Parameters。 value,其中明确指出从“DriverCommand.GET_CURRENT_URL”获取的字符串响应或response.getValue()是否为null>>“远程浏览器未响应getCurrentUrl”异常被抛出。

@Override
 public String getCurrentUrl() {
   Response response = execute(DriverCommand.GET_CURRENT_URL);
     if (response == null || response.getValue() == null) {
       throw new WebDriverException("Remote browser did not respond to getCurrentUrl");
     }
     return response.getValue().toString();
  }

对我有用的解决方案是简单地在获取当前网址之前添加页面刷新 -

clickableEvents.refreshPage();
字符串 url = driver.getCurrentUrl();

如果这个解决方案对您有用,请投票支持这个答案。 :)

© www.soinside.com 2019 - 2024. All rights reserved.