селен - webdriver не будет go вернуться на предыдущую страницу - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь нажать на ссылку, очистить данные с этой веб-страницы, go снова вернуться, нажать на следующую ссылку и так далее. Но по какой-то причине я не могу go вернуться на предыдущую страницу. Я заметил, что могу выполнить код до go назад, если я нахожусь за пределами l oop, и я не могу понять, что не так с l oop. Я пытался использовать driver.back () тоже, и все же он не будет работать. Любая помощь приветствуется! TYI

x = 0 #counter
contents=[]
for link in soup_level1.find_all('a', href=re.compile(r"^/new-homes/arizona/phoenix/"), tabindex=-1):

    python_button =driver.find_element_by_xpath("//div[@class='clearfix len-results-items len-view-list']//a[contains(@href,'/new-homes/arizona/phoenix/')]")

    driver.execute_script("arguments[0].click();",python_button)

    driver.implicitly_wait(50)

    soup_level2=BeautifulSoup(driver.page_source, 'lxml')

    a=soup_level2.find('ul',  class_ ='plan-info-lst')

    for names in a.find('li'):
         contents.append(names.span.next_sibling.strip())


    driver.execute_script("window.history.go(-1)")

    driver.implicitly_wait(50)

    x += 1

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Дополнительная информация о ваших интервалах использования:

  • Версия клиента Selenium
  • Вариант и версия WebDriver
  • Тип и версия браузера

помог бы нам лучше отладить проблему.


Однако, чтобы вернуться к предыдущей странице на go, можно использовать любое из следующих решений:

  • Использование back(): на один шаг назад в истории браузера.

    • Использование:

      driver.back()
      
  • Использование execute_script(): синхронно выполняет JavaScript в текущем окне / кадре.

    • Использование:

      driver.execute_script("window.history.go(-1)")
      

Вариант использования Inte rnet Explorer

Согласно @ james.h.evans.jr комментарий в обсуждении driver.navigate (). back () блокирует, когда кнопка «назад» вызывает предупреждение javascript на странице , если вы используете время от времени back() может не работать и довольно много опыта обозначен как для перехода назад в историю с помощью метода COM GoBack () интерфейса IWebBrowser . Учитывая, что, если есть какие-либо модальные диалоги, которые появляются во время выполнения метода, метод заблокируется.

Вы можете даже столкнуться с подобными проблемами при вызове forward() в истории и отправке форм. Метод GoBack может быть выполнен в отдельном потоке, который включает вызов нескольких не слишком интуитивно понятных функций маршалинга COM-объектов, например, CoGetInterfaceAndReleaseStream() и CoMarshalInterThreadInterfaceInStream(), но, похоже, с этим ничего не поделаешь .

0 голосов
/ 28 февраля 2020

Вместо использования driver.execute_script("window.history.go(-1)")

Вы можете попробовать использовать

driver.back () см. здесь

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

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