#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 оттуда и повторить попытку