如何使用Python Selenium Webdriver(Firefox)加载后防止页面更新

时间:2019-06-07 11:14:52

标签: python selenium webdriver

我正在使用Python Selenium使用Firefox将数据从网页保存到电子表格中,但是该页面会不断更新数据,从而导致与过时的元素有关的错误。我该如何解决?

我试图关闭JavaScript,但这似乎无能为力。任何建议都很棒!

1 个答案:

答案 0 :(得分:0)

如果您想在特定时间将数据保存在页面上,则可以

  1. get the current page HTML source使用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")
您需要与元素进行交互时,

执行查找

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

甚至最好选择Explicit Wait所需的元素:

WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//your/selector"))).get_attribute("href")