为什么我不能在Selenium 3.0中使用LINQ和IJavaScriptExecutor以及如何解决它?

时间:2016-10-15 22:48:58

标签: c# selenium selenium-firefoxdriver

我使用以下规格进行测试:
Mozilla Firefox 46.1
Selenium WebDriver 2.53.1 via Nuget
Windows 10 64bit

这是我的代码

using (IWebDriver driver = new FirefoxDriver())
{
    driver.Navigate().GoToUrl("someURL");
    //error
    var e_email = driver.FindElements(By.TagName("input"))
        .Where(x => x.GetAttribute("name") == "email" 
        && x.GetAttribute("Placeholder") == "Guest Email").FirstOrDefault();

    //also error
    string js = "var paras = document.getElementsByClassName('someClass');for(var i=0;i<paras.length;i++) {{ paras[i].parentNode.removeChild(paras[i]);}}";
    ((IJavaScriptExecutor)driver).ExecuteScript(js);
}

上述代码在Mozilla Firefox 46.1Selenium 2.53.1中运行良好。我使用geckodriver 0.11.1

更新Selenium to ver 3.0Mozilla Firefox to ver 47时会显示错误

在更新到更新版本后执行时,它为LINQ生成error : Permission denied to access property 'navigator',为IJavaScriptExecutor生成Permission denied to access property 'document'。为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我在WebDriverWait中等待一个相当复杂的XPath时遇到了类似的问题,最终修复它的问题是将Firefox更新为49.0.2。