我想在点击后抓取页面的页面源。然后使用browser.back()函数返回。但是,点击后Selenium不会让页面完全加载,而且JavaScript生成的内容也不会包含在该页面的页面源中。
element[i].click()
#Need to wait here until the content is fully generated by JS.
#And then grab the page source.
scoreCardHTML = browser.page_source
browser.back()
答案 0 :(得分:4)
正如艾伦所说 - 你可以等待加载一些元素。下面是一个示例代码
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "element_id")))
答案 1 :(得分:1)
您也可以使用硒staleness_of
from selenium.webdriver.support.expected_conditions import staleness_of
def wait_for_page_load(browser, timeout=30):
old_page = browser.find_element_by_tag_name('html')
yield
WebDriverWait(browser, timeout).until(
staleness_of(old_page)
)
答案 2 :(得分:0)
您可以使用这种尝试循环的方法来完成此操作,该方法易于实现
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("url")
Button=''
while not Button:
try:
Button=browser.find_element_by_name('NAME OF ELEMENT')
Button.click()
except:continue
答案 3 :(得分:0)
假设“通过”是当前页面中的一个元素,并且不会出现在目标页面中。 我主要使用要点击的链接的ID。因为它很少出现在目标页面上。
while True:
try:
browser.find_element_by_id("pass")
except:
break