Оператор If, не возвращающий такую функцию элемента

#python #selenium #selenium-chromedriver

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

Вопрос:

У меня есть следующий код:

     if(driver.find_element_by_xpath('//*[@id="Login"]/div/div/button[1]')!=0):
     driver.find_element_by_xpath('//*[@id="Login"]/div/div/button[1]').click()
     time.sleep(randint(1,2))
  

Я хочу, чтобы это переместилось на следующую строку, если кнопка входа не найдена и, следовательно, равна 0, однако, когда я запускаю эту строку кода, я получаю следующую ошибку:

Сообщение: такого элемента нет: не удалось найти элемент: {«метод»:»xpath»,»селектор»:»// * [@id =»Login»]/div / div /button[1]»}

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

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

1. Пожалуйста, обновите отступ в вашем примере кода.

2. Если вы передадите описание несуществующего элемента .find_element_by_xpath() , оно, конечно, не вернет ноль. None кажется гораздо более вероятным (хотя я не пользователь selenium, поэтому я не на 100% уверен в том, что он возвращает).

3. Вам даже не понадобится !=0, потому что это будет логическое значение. В любом случае это будет равно true . Но попытка except была бы здесь более полезной.

Ответ №1:

Возможно, ваш xpath неверен.

Щелкните правой кнопкой мыши на элементе, затем слева на Inspect, щелкните на HTML-странице и нажмите CTRL F. В текстовом поле скопируйте свой xpath и посмотрите, указывает ли он на какую-либо часть HTML-кода, если нет, попробуйте изменить xpath.

Кроме того, если вы хотите проверить, отображается ли кнопка входа вообще, вы можете использовать

 if(driver.findelements(By.xpath("//*[@id="Login"]/div/div/button[1]")).size>0)
{
   //code block
}
  

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

1. Элемент не существует на странице, я хочу проверить, существует ли он, и если он существует, то сделайте что-нибудь, если нет, перейдите на следующую строку. XPath определенно корректен, если сайт загружается без каких-либо файлов cookie.

2. Да, я предоставил вам код, который будет проверять, существует ли элемент на странице. if(driver.findelements(By.xpath(«//*[@id =»Login»]/div / div /button[1]»)).size> 0) { // блок кода }