У меня есть форма Google, которую я переворачиваю (по крайней мере, пытаюсь). Я хочу просмотреть его, чтобы найти текст, где написано «Имя», затем найти родительский div всего блока, который содержит этот вопрос, и найти элемент ввода, где я могу использовать send_keys (), чтобы заполнить свое имя. Я смог найти «Имя» и найти родительский div.
src = result.content
driver = webdriver.Chrome()
driver.get('https://exampleform.com')
soup = BeautifulSoup(src, 'html.parser')
name = soup.find(string="Name ")
nameBlock = name.find_parents('div', class_="freebirdFormviewerViewNumberedItemContainer", limit = 1)
if soup.find(string="Name "):
print('yes')
#prints yes
if name.find_parents('div', class_="freebirdFormviewerViewNumberedItemContainer", limit = 1):
print('okay')
#prints okay
if nameBlock.find('input'):
print('yup')
#gets error
# Also have tried nameBlock.find(tag = 'input')
# and nameBlock.find_element_by_tag_name('input)
# and name.find_parents('div', class_="freebirdFormviewerViewNumberedItemContainer", limit = 1).find('input)
Я проверил, что я нашел родительскую функцию, распечатав переменную «nameBlock» и смог получить весь родительский элемент Div и увидел с тегом ввода там в консоли. Но затем я получаю эту ошибку, когда пытаюсь использовать последний оператор if, чтобы узнать, смог ли я найти элемент ввода:
AttributeError: ResultSet object has no attribute 'find_elements_by_tag_name'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
Я думаю, что родительский объект выбран как каждый дочерний элемент в этом родитель, так что каждый ребенок ищет
nameBlock.find('input')
, но я не совсем уверен, как бы я go просто выбрал дочерний элемент ввода. Какие-либо предложения? Также вот HTML, чтобы лучше понять мою проблему.