WebDriverException:错误:访问属性“navigator”的权限被拒绝

时间:2016-10-20 11:09:19

标签: selenium firefox selenium-webdriver selenium-firefoxdriver geckodriver

以下是遇到的“魔法”处理:代码在Ubuntu 16.04,Ubuntu 15.10上运行正常,有错误:

org.openqa.selenium.WebDriverException: Error: Permission denied to access property "navigator"
org.openqa.selenium.WebDriverException: Error: Permission denied to access property "document"

我有以下代码:

import geb.spock.GebReportingSpec
import geb.waiting.WaitTimeoutException

class LoginSpec extends GebReportingSpec {
    def "#0 go to login FB"() {
    when:
        browser.go("https://www.facebook.com/")
    then:
        delay(9)
        if (browser.title != "Facebook") {
            browser.title == "Facebook - Log In or Sign Up"
            browser.currentUrl == "https://www.facebook.com/"
            waitFor(30){
                $("#loginbutton").size() == 1
            }
            $("#email").value(Config.FB_USERNAME)
            $("#pass").value(Config.FB_PASSWORD)
            println("entered credentials")
            $("#loginbutton").click()
        }
        delay(9)
    }

    void delay(Long seconds){
        try {
            waitFor(seconds){ }
        } catch (WaitTimeoutException ignored){ }
    }
}

GebConfig.groovy:

import org.openqa.selenium.firefox.FirefoxDriver

waiting {
    timeout = 2
}
environments {
    firefox {
        driver = { new FirefoxDriver() }
    }
}
baseUrl = "https://google.com"
testReportDir = new File("$buildDir/test-reports/UT")
testResultsDir = new File("$buildDir/test-results/UT")

在build.gradle行

firefoxTest {
    systemProperty "webdriver.gecko.driver", "/usr/bin/geckodriver"
}

错误:

LoginSpec > #0 go to login FB FAILED
    org.openqa.selenium.WebDriverException: Error: Permission denied to access property "navigator"
    Build info: version: '3.0.0-beta4', revision: '3169782', time: '2016-09-29 10:30:04 -0700'
    System info: host: 'tb-buildagent01-infrastructure-ci', ip: '10.4.1.4', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-30-generic', java.version: '1.8.0_66-internal'
    Driver info: org.openqa.selenium.firefox.FirefoxDriver
    Capabilities [{rotatable=false, raisesAccessibilityExceptions=false, marionette=true, appBuildId=20160606114238, version=, platform=LINUX, proxy={}, command_id=1, specificationLevel=0, acceptSslCerts=false, browserVersion=47.0, platformVersion=4.2.0-30-generic, XULappId={ec8030f7-c20a-464f-9b0e-13a3a9e97384}, browserName=Firefox, takesScreenshot=true, takesElementScreenshot=true, platformName=Linux, device=desktop}]
    Session ID: 5af3ae72-af52-4760-9b9c-5a1261b52113
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:126)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:93)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:42)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602)
        at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:284)
        at org.openqa.selenium.remote.RemoteWebElement.getAttribute(RemoteWebElement.java:136)
        at geb.navigator.NonEmptyNavigator.setInputValue(NonEmptyNavigator.groovy:687)
        at geb.navigator.NonEmptyNavigator.setInputValues_closure40(NonEmptyNavigator.groovy:680)
        at groovy.lang.Closure.call(Closure.java:414)
        at geb.navigator.NonEmptyNavigator.setInputValues(NonEmptyNavigator.groovy:679)
        at geb.navigator.NonEmptyNavigator.value(NonEmptyNavigator.groovy:417)
        at LoginSpec.#0 go to login FB(LoginSpec.groovy:81)
    org.openqa.selenium.WebDriverException: Error: Permission denied to access property "document"
    Build info: version: '3.0.0-beta4', revision: '3169782', time: '2016-09-29 10:30:04 -0700'
    System info: host: 'tb-buildagent01-infrastructure-ci', ip: '10.4.1.4', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-30-generic', java.version: '1.8.0_66-internal'
    Driver info: org.openqa.selenium.firefox.FirefoxDriver
    Capabilities [{rotatable=false, raisesAccessibilityExceptions=false, marionette=true, appBuildId=20160606114238, version=, platform=LINUX, proxy={}, command_id=1, specificationLevel=0, acceptSslCerts=false, browserVersion=47.0, platformVersion=4.2.0-30-generic, XULappId={ec8030f7-c20a-464f-9b0e-13a3a9e97384}, browserName=Firefox, takesScreenshot=true, takesElementScreenshot=true, platformName=Linux, device=desktop}]
    Session ID: 5af3ae72-af52-4760-9b9c-5a1261b52113

我明白,环境有问题,但我不知道我犯了哪些错误?请给我建议,我该如何解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:2)

一般来说,原因是不同版本的Ubuntu和Firefox免费。如果有人看到这样的错误,我建议从终端执行“apt-cache policy firefox”。 现在在Ubuntu 16.04上,您可以看到:

  Installed: 49.0+build4-0ubuntu0.16.04.1
  Candidate: 49.0+build4-0ubuntu0.16.04.1
  Version table:
 *** 49.0+build4-0ubuntu0.16.04.1 500
        500 http://ua.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
        100 /var/lib/dpkg/status
     45.0.2+build1-0ubuntu1 500
        500 http://ua.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

在Ubuntu 15.10上:

 Candidate: 47.0+build3-0ubuntu0.15.10.1
 Version table:
    47.0+build3-0ubuntu0.15.10.1 0
       500 http://azure.archive.ubuntu.com/ubuntu/ wily-updates/main amd64 Packages
       500 http://security.ubuntu.com/ubuntu/ wily-security/main amd64 Packages
       100 /var/lib/dpkg/status
    41.0.2+build2-0ubuntu1 0
       500 http://azure.archive.ubuntu.com/ubuntu/ wily/main amd64 Packages

他们必须得到解决。而selenium和其他依赖数据库的回滚版本也无济于事,因为前端可能是浏览器不支持的东西(更不用说FB了),例如:var result = window.Notification.requestPermission(callback)它是https://developer.mozilla.org/ru/docs/Web/API/Notification/requestPermission :)是的,你似乎(查看错误)页面为空是正确的 - 因为ajax无法解决问题。一方面你可能会发现一个错误(不是每个客户都使用最新版本的浏览器),但在我的情况下 - 这是一个加分的痛苦。并且要更新整个系统 - 为粉丝提供娱乐,尽管可能在你的团队中有一个人表现为拖延,在这种情况下,你很幸运。

答案 1 :(得分:0)

我收到了错误:

org.openqa.selenium.JavascriptException: Error: Permission denied to access property "navigator"

当我使用Firefox 45.7和gecko驱动程序

我将Firefox升级到52.2,错误消失了。