我当前在新窗口中单击一个按钮:
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
正常工作(当不单击进入新窗口时)?
答案 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)