Когда вы найдете кнопку входа на соответствующей странице, проблем не возникнет, и все работает нормально. Однако, если пользователь вошел на страницу, обычно кнопка «Войти» не может быть найдена, и программа выдает ошибку.
Я хочу проверить, когда загружается страница и отображается ли появится кнопка входа в систему, должен запуститься код входа пользователя. Если отображается домашняя страница, на которую вы вошли, вы можете продолжить другие операции, например щелкнуть другую область.
new DriverManager().SetUpDriver(new ChromeConfig());
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument(@"user-data-dir=C:\\Users\\ASUS\\AppData\\Local\\Google\\Chrome\\User Data");
var service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
service.SuppressInitialDiagnosticInformation = true;
IWebDriver driver = new ChromeDriver(service,chromeOptions);
var Url = "https://www.sampleeeeeee.com";
driver.Url = Url;
WaitForPageLoad(driver);
var loginBtn = FindElementWithJs(driver, "button.btn-standard.call-to-action") as IWebElement;
loginBtn.Click();
Кнопка входа здесь появляется, если нет входа в систему. Если пользователь вошел в систему, система не работает, поскольку он не может найти здесь кнопку входа.
Какой путь мне следует пройти?
Я запросил кнопку входа с помощью bool. Если это окажется правдой, запустите другие коды. Но когда он не может найти кнопку входа в систему, bool также выдает ошибку.
static object FindElementWithJs(IWebDriver driver,string command, object[] options=null,bool costumJs=false,int recheck = 4, int timeout=5,string message = "CANNOT_FOUND_ELEMENT")
{
int elementReCheck = 1;
try
{
while (true)
{
if(elementReCheck > recheck)
{
throw new Exception(message);
}
string queryObject = costumJs == false ? $"return document.querySelector('{command}')" : command;
var element = RunJsCommand(driver, queryObject,options);
Thread.Sleep(TimeSpan.FromSeconds(timeout));
if(element != null)
{
return element;
}
else
{
elementReCheck++;
}
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-an-error
Если пользователь вошел в систему, он не может найти элемент и выдает ошибку ⇐ C#
Место общения программистов C#
1728367181
Anonymous
Когда вы найдете кнопку входа на соответствующей странице, проблем не возникнет, и все работает нормально. Однако, если пользователь вошел на страницу, обычно кнопка «Войти» не может быть найдена, и программа выдает ошибку.
Я хочу проверить, когда загружается страница и отображается ли появится кнопка входа в систему, должен запуститься код входа пользователя. Если отображается домашняя страница, на которую вы вошли, вы можете продолжить другие операции, например щелкнуть другую область.
new DriverManager().SetUpDriver(new ChromeConfig());
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument(@"user-data-dir=C:\\Users\\ASUS\\AppData\\Local\\Google\\Chrome\\User Data");
var service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
service.SuppressInitialDiagnosticInformation = true;
IWebDriver driver = new ChromeDriver(service,chromeOptions);
var Url = "https://www.sampleeeeeee.com";
driver.Url = Url;
WaitForPageLoad(driver);
var loginBtn = FindElementWithJs(driver, "button.btn-standard.call-to-action") as IWebElement;
loginBtn.Click();
Кнопка входа здесь появляется, если нет входа в систему. Если пользователь вошел в систему, система не работает, поскольку он не может найти здесь кнопку входа.
Какой путь мне следует пройти?
Я запросил кнопку входа с помощью bool. Если это окажется правдой, запустите другие коды. Но когда он не может найти кнопку входа в систему, bool также выдает ошибку.
static object FindElementWithJs(IWebDriver driver,string command, object[] options=null,bool costumJs=false,int recheck = 4, int timeout=5,string message = "CANNOT_FOUND_ELEMENT")
{
int elementReCheck = 1;
try
{
while (true)
{
if(elementReCheck > recheck)
{
throw new Exception(message);
}
string queryObject = costumJs == false ? $"return document.querySelector('{command}')" : command;
var element = RunJsCommand(driver, queryObject,options);
Thread.Sleep(TimeSpan.FromSeconds(timeout));
if(element != null)
{
return element;
}
else
{
elementReCheck++;
}
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79064506/if-the-user-is-logged-in-it-cannot-find-the-element-and-gives-an-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия