Почему я не могу использовать LINQ и IJavaScriptExecutor в Selenium 3.0 и как это решить?

#c# #selenium #selenium-firefoxdriver

#c# #селен #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" 
        amp;amp; 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.1 и Selenium 2.53.1 . Ошибки появляются, когда я обновляю Selenium to ver 3.0 and Mozilla Firefox to ver 47 с помощью geckodriver 0.11.1

Он генерируется error : Permission denied to access property 'navigator' для LINQ и Permission denied to access property 'document' для IJavaScriptExecutor при выполнении после обновления до более новой версии. Почему это должно произойти и как решить эту проблему?

Комментарии:

1. может быть какая-то проблема со значением someURL

2. @viveknuna Нет, потому что он работает хорошо, когда я переходил на предыдущую версию

3. Вы используете iframe?

4. @viveknuna Нет. Я не использую ни iframe, ни frame.

Ответ №1:

У меня была аналогичная проблема, ожидающая довольно сложного XPath в WebDriverWait, и в итоге ее исправлением стало обновление Firefox до 49.0.2.