Объект типа ‘WebElement’ не имеет функции len() — Python Selenium

#python #selenium

Вопрос:

Я пытаюсь написать функцию, которая проверяет, существует ли элемент, и если да, то проверяет, является ли этот элемент числовым или нет и т. Д. Однако при попытке выполнить len или .size() на элементах возникает ошибка. Есть ли у меня безопасный способ проверить, существует ли элемент? Это фрагмент:

 groupId = browser.find_element_by_css_selector(groupIdCSS)
    if len(groupId)>0:
        if any (c.isalpha() for c in groupId.text):
            deletegroup = browser.find_element_by_css_selector('#app > div.v-application--wrap > main > div > div > div.container > div:nth-child(5) > div > div:nth-child(3) > div > div:nth-child(1) > div > div.ml-3.px-2.elevation-0.v-card.v-sheet.theme--light > div > div.col-md-4.col-12 > div > div > button')
            deletegroup.click()
            time.sleep(2)
        else:
            kback = browser.find_element_by_css_selector('#app > div.v-application--wrap > main > div > div > div.container > div:nth-child(3) > div > div > div > div > div:nth-child(2) > ul > li:nth-child(5) > div > div')
            kback.click()
            htree = browser.find_element_by_css_selector('#app > div.v-application--wrap > main > div > div > div.container > div:nth-child(4) > div > div > div.row.no-gutters.align-start.justify-start.align-content-start > div:nth-child(1) > div > div > div.v-slide-group__wrapper > div > div:nth-child(3)')
            htree.click()
            time.sleep(2)
    else:
        kback = browser.find_element_by_css_selector(
            '#app > div.v-application--wrap > main > div > div > div.container > div:nth-child(3) > div > div > div > div > div:nth-child(2) > ul > li:nth-child(5) > div > div')
        kback.click()
        htree = browser.find_element_by_css_selector(
            '#app > div.v-application--wrap > main > div > div > div.container > div:nth-child(4) > div > div > div.row.no-gutters.align-start.justify-start.align-content-start > div:nth-child(1) > div > div > div.v-slide-group__wrapper > div > div:nth-child(3)')
        htree.click()
        time.sleep(2)
 

Ответ №1:

 browser.find_element_by_css_selector(groupIdCSS)
 

это возвращает один веб — элемент. В Selenium-Python len() — для одного веб-элемента не допускается. Вот причина, по которой вы получаете упомянутую ошибку :

WebElement не имеет len()

но это

 browser.find_elements_by_css_selector(groupIdCSS)
 

возвращает список веб — элементов.

измените это, и тогда вы легко сможете это сделать :

 if len(groupId) > 0 :
 

и вместо

 if any (c.isalpha() for c in groupId.text):
 

вы должны сделать :

 for a in groupId:
    if a.text == "some value"
 

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

1. Это, однако, дает мне следующее: 'list' object has no attribute 'text' . В принципе, он не будет запускать мою isalpha() в списке. Я просто нацеливаюсь на первый элемент списка или?

2. groupId-это список, и .text в нем не разрешен в списке в Python

3. или вы можете просто удалить .text оттуда и повторить попытку