#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) { // блок кода }