python selenium-单击按钮并获取page_source

时间:2018-12-18 08:12:47

标签: python selenium

我当前在新窗口中单击一个按钮:

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)

但必须time.sleep(10),然后问browser.page_source 否则,页面无法完全加载

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

如何使browser.page_source正常工作(当不单击进入新窗口时)?

2 个答案:

答案 0 :(得分:1)

尝试等待页面加载完毕(document.readyState == 'complete'),如下所示:

from selenium.webdriver.support.ui import WebDriverWait

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

答案 1 :(得分:0)

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

driver.set_page_load_timeout(30)