#c# #selenium #selenium-chromedriver
#c# #селен #selenium-chromedriver
Вопрос:
Я создал очень простой проект на C # для тестирования драйвера Selenium и Chrome, но когда я его запускаю, он застревает на самой первой строке, т.Е. создание объекта ChromeDriver.
Я настроил следующим образом:
- Консольное приложение .NET Core 3.1 (также пробовал .NET 4.7)
- Установлен Selenium.WebDriver 3.141.0 и Selenium.WebDriver.ChromeDriver 87.0.4280.8800.
- Моя версия Chrome — «Версия 87.0.4280.88 (официальная сборка) (64-разрядная версия)». Я дважды проверил совместимость с Chrome и ChromeDriver.
- Код:
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/");
}
}
}
chromedriver.exe
копируется в папку отладки, как и ожидалось, поэтому я предполагаю, что проблема не заключается ни в совместимости, ни в пути.
Когда я запускаю код, результатом является пустое окно с «данными» в адресной строке. Ошибка не выдается. Я искал несколько часов и нашел несколько статей, но большинство из них старые, и ни один из этих ответов не привел к успеху.
Любая помощь приветствуется. Спасибо.
Добавлено 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/
-адреса вам необходимо передать полный URLGoToUrl()
-адрес следующим образом: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 в свой первоначальный вопрос. Пожалуйста, не могли бы вы взглянуть?