Если пользователь вошел в систему, он не может найти элемент и выдает ошибкуC#

Место общения программистов C#
Ответить
Anonymous
 Если пользователь вошел в систему, он не может найти элемент и выдает ошибку

Сообщение 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);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-an-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»