#python #selenium #google-chrome
#python #selenium #google-chrome
Вопрос:
Ошибка возникает, когда я выполняю очистку веб-страниц. с
сообщением об ошибке Selenium :
WebDriverException: Message: unknown error: cannot determine loading
status from no such execution context (Session info: chrome=73.0.3683.103)
(Driver info: chromedriver=73.0.3683.68
(47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 6.1.7601
SP1 x86_64)
Когда новое окно задерживается, возникает следующая ошибка. Я попробовал поиск в Google, но не смог найти решение.
код:
driver.switch_to.window(driver.window_handles[1])
WebDriverWait(driver,
60).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#listForm >
div.contents_sub > div.cont_area > div > table.board_view.fix > tbody
> tr:nth-child(2) > td')))
Как мне получить эту ошибку?
Комментарии:
1. Вы уверены
driver.switch_to.window(driver.window_handles[1])
, что работает. Я имею в виду, у вас действительно есть второе окно? Вы можете напечатать количество окон, чтобы убедиться, что есть 2 окна. В идеале сообщение, похоже, появляется при попытке переключиться на окно, которого там нет.2. Спасибо. Я попытаюсь time.sleep перед выполнением switch_to.window .
3. Это не было решено.
4. Каково количество / длина обработчиков окон перед переключением?
5. Я пишу код, который ‘While True: если len (driver.window_handles)> 1: break’ перед driver.switch_to.window . Но это все равно часто случается.
Ответ №1:
Я решил ту же проблему. Попробуйте напечатать no. активных окон, чтобы узнать, присутствует ли второе окно или нет. Затем переключитесь на второе окно. В моем случае вторая windows не была активна, поэтому я добавил wait, а затем переключился.
Комментарии:
1. Я пишу код, который ‘While True: если len (driver.window_handles)> 1: break’ перед driver.switch_to.window . Но это все равно часто случается.
Ответ №2:
WebDriverWait
у меня тоже не работает, но работает использование while
и try except
блокировка.
from selenium.common.exceptions import WebDriverException
...
driver.switch_to.window(driver.window_handles[1])
form = None
while form is None:
try:
form = driver.find_element_by_id('loginform')
except WebDriverException:
pass
print(form)
Кроме того, я предлагаю попробовать geckodriver.