#python #python-3.x #selenium #selenium-webdriver
Вопрос:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.implicitly_wait(40)
driver.get("https://www.youtube.com/")
elem = driver.find_element_by_name("search_query")
elem.clear()
elem.send_keys("python")
elem.send_keys(Keys.RETURN)
Этот код предполагает отправку «python» в поле поиска веб-страницы и получение новой веб-страницы, но он не работает, и я понятия не имею, почему.
Ответ №1:
Вам нужно немного задержаться/подождать, прежде чем передавать ключ возврата.
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.youtube.com/")
elem = driver.find_element_by_name("search_query")
elem.clear()
elem.send_keys("python")
time.sleep(2)
elem.send_keys(Keys.RETURN)
Комментарии:
1. Я работал отлично, но не могли бы вы объяснить мне причину этого, чтобы я мог улучшить свое программирование.
2. В основном элемент не был отрисован должным образом, и нам пришлось использовать ожидание, чтобы выполнить работу.
Ответ №2:
Еще один трюк может заключаться в том, что при вводе текста в текстовое поле попробуйте имитировать действия пользователя. например, в этом случае нажмите на это текстовое поле, а затем введите.(обратитесь к комментарию к коду).
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.implicitly_wait(40)
driver.get("https://www.youtube.com/")
elem = driver.find_element_by_name("search_query")
elem.clear()
elem.send_keys("python")
elem.click() # add this line to your code
elem.send_keys(Keys.RETURN)