Я пытаюсь найти на веб-сайте окно поиска с идентификатором (search2). Мне удалось успешно войти на сайт, используя приведенный ниже код.
import requests
from tqdm import tqdm
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=r'C:\chromedriver_win32\chromedriver.exe', chrome_options=options)
driver.implicitly_wait(30)
tgt = "C:\\mypath"
profile = {"plugins.plugins_list": [{"enabled":False, "name":"Chrome PDF Viewer"}],
"download.default_directory" : tgt}
options.add_experimental_option("prefs",profile)
print(options)
driver.get("http://mylink.com/")
user=driver.find_element_by_id("username")
passw=driver.find_element_by_id("password")
user.send_keys("[email protected]")
passw.send_keys("Pwd")
driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/form/div[3]/button').click()
page=driver.find_element_by_id("search2")
print(page)
Код работает отлично до этого момента, но в тот момент, когда я добавляю к нему ниже, я получаю сообщение об ошибке
page.send_keys("abc")
Я получаю следующую ошибку.
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
Я пытаюсь здесь войти на сайт, найти некоторые элементы и загрузить результаты. Я уже пробовал использовать параметры неявного ожидания, указанные в коде. Любая помощь будет высоко оценен.
Можете ли вы опубликовать html для элемента search2?
<input type = "text" id = "search2" aria-label = "Ввод текста с раскрывающимся списком сегментированной кнопки" ng-class = "bc.autoCompleteVisible? 'search-box-input-search': 'search-box-input' "placeholder = " Что вы ищете? " data-ng-model = "bc.autoCompleteQuery" pi-enter = "addSearchAsTextFilter (textSearch)" pi-esc = "clearSearch ()" data-ng-focus = "searchBoxFocus (true)" data-ng-blur = "searchBoxFocus (false) "ng-trim = " false "autocomplete = " off "class = " ng-pristine ng-valid search-box-input ng-touched ">
Добавление приведенного ниже фрагмента кода помогло. Пришлось перевести текущий поток в спящий режим, пока программа продолжает выполнять следующие шаги.
time.sleep(5)
Спасибо всем.
После url
http://mylink.com/
я не вижу поля, идентифицированного какfind_element_by_id("username")
иfind_element_by_id("password")
. Я что-то пропустил?