【问题标题】:python selenium - click button and get page_sourcepython selenium - 单击按钮并获取 page_source
【发布时间】:2018-12-18 17:06:13
【问题描述】:

我目前点击一个按钮进入一个新窗口:

browser.execute_script("arguments[0].value = 'test';", browser.find_element_by_xpath('//*[@id="email-signup-email-address"]'))
input_button = browser.find_element_by_xpath('//*[@id="submittracking"]')
browser.execute_script('arguments[0].target="_blank";', input_button.find_element_by_xpath('./ancestor::form'))
browser.execute_script('arguments[0].click();', input_button)

但在询问browser.page_source之前必须time.sleep(10) 否则页面无法完全加载

其他文章/帖子建议使用 seleniums explicit wait 但这要求提供一个等待的元素,例如 visibilityOfAllElements() 或某些特定元素。我想获得 ALL page_source 并且不想识别任何元素。

如何让browser.page_source 正常工作(不点击新窗口时)?

【问题讨论】:

  • 你可以等到状态完成,看这个stackoverflow.com/questions/5868439/…
  • 你的意思是,readyState?我可能会进一步调查。好奇它是否内置了超时。而且链接主要是Java

标签: python selenium


【解决方案1】:

尝试等待页面加载(document.readyState == 'complete')如下:

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(browser, 20).until(lambda browser: browser.execute_script("return document.readyState;") == "complete")

【讨论】:

    【解决方案2】:

    您可以为页面加载使用一些超时,如下所示:

    driver.set_page_load_timeout(30)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-18
      • 2020-11-28
      • 2022-01-05
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      相关资源
      最近更新 更多