用户点击网址后,我正在尝试获取innerHeight,scrollHeight和scrollTop的新页面,
driver.switch_to_window(driver.window_handles[-1]) # switch to newest window after user click some link
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
documentElement = driver.execute_script("return document.documentElement.scrollTop")
innerHeight = driver.execute_script("return window.innerHeight")
pageHeight = driver.execute_script("return document.body.scrollHeight")
但是,这些脚本返回错误的值,因为它在新页面完全加载之前执行。我怎样才能得到正确的值?
答案 0 :(得分:1)
您可以使用JavaScript检查文档的就绪状态。
state = driver.execute_script('return document.readyState')
if state == 'complete':
# the page is completely loaded
您可以创建自己的自定义预期条件来测试它。
class document_complete(object):
def __call__(self, driver):
script = 'return document.readyState'
try:
return driver.execute_script(script) == 'complete'
except WebDriverException:
return False
并像任何其他EC一样使用它
WebDriverWait(driver, 20).until(document_complete())
答案 1 :(得分:0)
当您使用driver.execute_script时,您会在document.onload
或window.onload
之后返回您的innerHeight,scrollHeight和scrollTop。
driver.execute_script(document.onload = function(){return document.documentElement.scrollTop})
建议 window.onload
。
你也可以尝试
driver.execute_script(window.onload=document.documentElement.scrollTop)