C # Selenium Chromedriver показывает только «данные»

#c# #selenium #selenium-chromedriver

#c# #селен #selenium-chromedriver

Вопрос:

Я создал очень простой проект на C # для тестирования драйвера Selenium и Chrome, но когда я его запускаю, он застревает на самой первой строке, т.Е. создание объекта ChromeDriver.

Я настроил следующим образом:

  1. Консольное приложение .NET Core 3.1 (также пробовал .NET 4.7)
  2. Установлен Selenium.WebDriver 3.141.0 и Selenium.WebDriver.ChromeDriver 87.0.4280.8800.
  3. Моя версия Chrome — «Версия 87.0.4280.88 (официальная сборка) (64-разрядная версия)». Я дважды проверил совместимость с Chrome и ChromeDriver.
  4. Код:
 using OpenQA.Selenium.Chrome;

namespace MyFirstSelenium
{
    class Program
    {
        static void Main(string[] args)
        {
            ChromeDriver chrome = new ChromeDriver();
            chrome.Navigate().GoToUrl("https://www.google.co.jp/");
        }
    }
}

 

экран visual studio

chromedriver.exe копируется в папку отладки, как и ожидалось, поэтому я предполагаю, что проблема не заключается ни в совместимости, ни в пути.

chromedriver

Когда я запускаю код, результатом является пустое окно с «данными» в адресной строке. Ошибка не выдается. Я искал несколько часов и нашел несколько статей, но большинство из них старые, и ни один из этих ответов не привел к успеху.

Любая помощь приветствуется. Спасибо.


Добавлено chromedriver.exe подробный вывод на консоль.

@Piotr M. консоль chromedriver

файл журнала https://drive.google.com/file/d/1ECOS8E55aaTFV63e8P-7n6uRVcf49PRN/view?usp=sharing

Новый код работает при первом выполнении «chromedriver.exe —verbose —log-path=chromedriver.log», но без него он вызывает исключение WebDriverException.

openQA.Selenium.WebDriverException: «Было выдано исключение с нулевым ответом, отправляющее HTTP-запрос на удаленный сервер WebDriver для URL localhost:9515 / session. Статус исключения был UnknownError, и сообщение было: не удалось установить соединение, поскольку целевая машина активно отказалась от него. Не удалось установить соединение, поскольку целевая машина активно отказалась от него. ‘

 var chromeOptions = new ChromeOptions();
chromeOptions.BrowserVersion = "87";
IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:9515"), chromeOptions);
 

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

1. Не могли бы вы, пожалуйста, открыть ChromeDriver.exe с параметрами chromedriver.exe —verbose —log-path=chromedriver.log и инициализируйте WebDriver с помощью конструктора public RemoteWebDriver(Uri remoteAddress, параметры DriverOptions); где remoteAddress будет localhost:9515 И не могли бы вы предоставить журналы из консоли ChromeDriver?

2. @Piotr M. Привет, спасибо за ваш комментарий. Я перешел по ссылке ниже и изменил код. selenium.dev/documentation/ru/remote_webdriver/… Chrome показывает Google. На консоли одна и та же ошибка повторяется три раза. Что это может означать? DevTools прослушивает ws://127.0.0.1:59592/devtools/browser/fc749e8b-34ab-4586-b43e-2b020a710e32 [4472:26676:0105/214205.314:ОШИБКА: device_event_log_impl.cc(211)] [21:42:05.314] USB: usb_device_handle_win.cc: 1020 Не удалось прочитать дескрипториз соединения с узлом: устройство, подключенное к системе, не функционирует. (0x1F)

3. Вы запустили ChromeDriver.exe с параметром -многословный ? Если да, есть ли какой-либо другой журнал в консоли? Ошибка, о которой вы упомянули, в вашем случае не имеет значения.

4. Я добавил скриншот вывода консоли и файл журнала к исходному вопросу. Пожалуйста, загляните внутрь.

5. Файл журнала — это ресурс, который мне нужен больше всего 🙂 но я не могу загрузить его по предоставленной ссылке : (

Ответ №1:

Возможно, классический случай циклической избыточности.

chrome это зарезервированное слово, возможно, вам придется изменить имя переменной на что-то другое, например chromex . Таким образом, ваша эффективная строка кода будет:

 ChromeDriver chromex = new ChromeDriver();
 

Дополнительное рассмотрение

Также рассмотрим следующие аспекты:

  • Вместо использования ChromeDriver класса используйте IWebDriver интерфейс.
     IWebDriver driver = new ChromeDriver();
     
  • Вместо частичного URL google.co.jp/ -адреса вам необходимо передать полный URL GoToUrl() -адрес следующим образом:
     driver.Navigate().GoToUrl(@"https://www.google.co.jp/");
     

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

1. Привет @DebanjanB, спасибо за ваш комментарий. Я быстро проверил ваше предложение, но все то же самое. Любые другие места, в которые я могу заглянуть? ChromeDriver chromex = новый ChromeDriver(); chromex.Navigate().GoToUrl(» google.co.jp /» );

2. @ari Проверьте обновленный ответ и сообщите мне о статусе.

3. Спасибо @DebanjanB. Я попытался ввести «https: //», но результат все тот же.

4. @ari Можете ли вы удалить это текущее рабочее пространство, создать новое рабочее пространство и запустить свой тест?

5. Я удалил старые проекты, создал новый, установил те же пакеты. Никаких изменений. Это такой простой проект… Я добавил изображение своего экрана Visual Studio в свой первоначальный вопрос. Пожалуйста, не могли бы вы взглянуть?