driver.find_elements_by_id ('fakebox-input'). send_keys ('site: linkedin.com/in/ AND "python developer" AND "London"'), показывающий ошибку атрибута - PullRequest
0 голосов
/ 10 апреля 2020

driver.find_elements_by_id ('fakebox-input'), показывающий ошибку атрибута

Когда я запускаю его через приглашение anaconda i python, оно выдает это сообщение об ошибке -

AttributeError: 'list' object has no attribute 'send_keys'

Так что это был мой код -

search_query = driver.find_elements_by_id('fakebox-input')#that's the ID I am getting from the chrome inspection image I attached 
search_query.send_keys('site:linkedin.com/in/ AND "python developer" AND "London"')

Также, когда я проверяю поисковый запрос, это пустой список

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Вы не можете использовать sendkey с объектом списка. если вы хотите использовать sendkey, используйте find_element_by_id вместо find_elements_by_id.

wait = WebDriverWait(driver, 20)
wait.until_not(EC.element_to_be_clickable((By.ID, "fakebox-input"))).send_keys("Your Data")

Добавьте ниже импортированных в ваше решение:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
0 голосов
/ 10 апреля 2020

Вы пытаетесь получить несколько элементов по идентификатору, он возвращает список. Попробуйте вместо этого функцию search_query = driver.find_element_by_id() обратите внимание, что я использую «элемент» вместо «элементы»

ОБЪЯСНЕНИЕ: каждая функция запроса в селене имеет 2 версии, одна для нескольких элементов (эта функция возвращает список элементов, которые соответствует вашему условию), другой предназначен для отдельного элемента (эта функция будет делать то же самое, что и первый, но будет возвращать только первое в списке. Кроме того, эта функция выдаст ошибку, если не найден ни один элемент, совпадающий с условие.)

Все эти функции имеют одно и то же имя, но одно для нескольких элементов, например find_elements_by_id. А другой - для одного элемента find_element_by_id.

. Вам нужно найти один элемент, если вы хотите отправить ключи, поэтому вы можете использовать любой из следующих

driver.find_elements_by_id(your_id)[0]

или

driver.find_element_by_id(your_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...