Как предотвратить обновление страницы после загрузки с помощью Python Selenium Webdriver (Firefox) - PullRequest
0 голосов
/ 07 июня 2019

Я использую Python Selenium для сохранения данных в электронной таблице с веб-страницы с использованием Firefox, но страница постоянно обновляет данные, вызывая ошибки, связанные с устаревшими элементами. Как мне решить эту проблему?

Я пытался отключить JavaScript, но это, похоже, ничего не делает. Любые предложения будут великолепны!

1 Ответ

0 голосов
/ 07 июня 2019

Если вы хотите сохранить данные на странице в определенный момент времени, вы можете

  1. получить исходный HTML-код текущей страницы , используя WebDriver.page_source функцию
  2. запишите его в файл
  3. откройте файл с диска с помощью WebDriver.get () функция
  4. вот и все, вы должны иметь возможность работать слокальная копия страницы, которая никогда не изменится

Пример кода:

driver.get("http://seleniumhq.org")
with open("mypage.html", "w") as mypage:
    mypage.write(driver.page_source)
    mypage.close()
    driver.get(os.getcwd() + "/" +  (mypage.name))
    #do what you need with the page source

другой подход - использование функции WebDriver.find_element везде, где вам нужно взаимодействовать сэлемент.

поэтому вместо

myelement = driver.find_element_by_xpath("//your_selector")
# some other action
myelement.getAttribute("interestingAttribute")

выполняйте find в любое время, когда вам нужно взаимодействовать с элементом:

driver.find_element_by_xpath("//your_selector").getAttribute("interestingAttribute")

или даже лучше пойти на Явное ожидание необходимого вам элемента:

WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//your/selector"))).get_attribute("href")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...