Дмитрий: ну давайте по порядку:
- "for i in driver: - циклом пробежать по всей странице". driver - это не страница. Это скорее весь браузер. А помимо страницы у него есть еще множество полей. В общем, driver - точно не набор элементов. Набор элементов вы как раз вытаскиваете через драйвер и сохраняете в массив.
- "if i == completed". Ну, предположим, вы написали, for i in completeds. Тогда каждый i - это просто один из веб элементов. Нужно понимать, что сам WebElement тоже не только текст, но и набор html-атрибутов, вложенных элементов и еще много чего. Поэтому, если нужно сравнить текст, то надо копать в сторону if i.text == "текст для сравнения"
- "если возникает ошибка при том что элемента нет". Ошибка возникает не от того, что элемента нет, а от того, что вы пытаетесь обратиться к нему. Я там выше обновил ответ. Вам нужно выполнять доп проверку. Погуглте про длину массива. нужно получить набор элементов, проверить, что длина массива > 0 и тогда только начать делать то, что вам нужно
Дмитрий: ну и все. Он на unreads и ругается. Потому что их нет
unread = [] - вот тут создали массив
unread=driver.find_element_by_class_name('under') - вот тут его ничем не наполнили, т.к. 0
...
com=[]
for i in driver: - вот это вообще загадочная строка для меня. У вас драйвер - это не коллекция. Это объект другой. может быть, вы хотели for i in unread ?
if i == completed: - вот тут тоже загадка. вы сравниваете объект типа WebElement с массивом.
com.append(i)
print(com)
elif i==unread: - и тут
com.append(i)
print(com)
elif i!=unread and i!=completed: - и тут
print("Ничего не обнаружено")
Дмитрий: пишите, пожалуйста, развернуто, где пишет undefined, в какой части?
var unders = $$('.under').length
//вот здесь UNDEFINED - это нормально
var completeds = $$('.completed').length
//и вот здесь UNDEFINED - это нормально
unders //здесь - нет
completeds
можно просто вот так в консоль хрома написать
console.log($$('.under').length)
в браузере, в консоли пишем 4 команды
var unders = $$('.under').length //запомнили количество всего с классом under
var completeds = $$('.completed').length //запомнили количество всего с классом completed
unders //должно вывести число
completeds //должно вывести число Дмитрий:
Дмитрий: еще раз: unread=driver_new.find_element_by_class_name('under') - вот так не сработает. Потому что driver_new - это просто строка с текущим url. у нее нет метода find_element_by_class_name
работайте только с одним драйвером (driver)
Попробуйте, как я выше написал, еще раз перейти по новому адресу
Дмитрий: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"under"}
ну нету такого элемента
покажите страничку, на которой делаете это все
Константин Довнар: автоматизация мобильных приложений строится по тому же принципу.
Например, есть appium (appium.io/). На нем можно имитировать работу пользователя.
Так автоматизация тестирования мобилок строится вообще
У меня андройд, но nfc не поддерживается. Что делать?
По-хорошему, вы когда вводите систему карт, вы эти карты обеспечиваете. Вводите систему телефонов на пропуске - кто их должен обеспечить?
- "for i in driver: - циклом пробежать по всей странице". driver - это не страница. Это скорее весь браузер. А помимо страницы у него есть еще множество полей. В общем, driver - точно не набор элементов. Набор элементов вы как раз вытаскиваете через драйвер и сохраняете в массив.
- "if i == completed". Ну, предположим, вы написали, for i in completeds. Тогда каждый i - это просто один из веб элементов. Нужно понимать, что сам WebElement тоже не только текст, но и набор html-атрибутов, вложенных элементов и еще много чего. Поэтому, если нужно сравнить текст, то надо копать в сторону if i.text == "текст для сравнения"
- "если возникает ошибка при том что элемента нет". Ошибка возникает не от того, что элемента нет, а от того, что вы пытаетесь обратиться к нему. Я там выше обновил ответ. Вам нужно выполнять доп проверку. Погуглте про длину массива. нужно получить набор элементов, проверить, что длина массива > 0 и тогда только начать делать то, что вам нужно
И вообще, вот selenium-python.readthedocs.io/index.html