selenium execute_script() returns 不正确的值
selenium execute_script() returns incorrect value
我使用 python selenium chromedriver 在 https://www.youtube.com/user/JFlaMusic/videos 这样的浮动页面上执行了下面的代码。但是代码执行不正确。
我希望转到页面末尾,但 last_height
和 new_height
一开始是相同的 while 条件循环。所以 break
被执行了。
为什么会出现这个结果?
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(last_height)
while True:
self.driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
time.sleep(0.5)
new_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(new_height)
if new_height == last_height:
break
last_height = new_height
与其使用看起来相当不可靠的 time.sleep(0.5)
,不如尝试如下实现 ExplicitWait 以等待页面滚动:
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(last_height)
while True:
self.driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
try:
wait(self.driver, 5).until(lambda driver: self.driver.execute_script("return document.documentElement.scrollHeight") > last_height)
except TimeoutException:
break
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")
我使用 python selenium chromedriver 在 https://www.youtube.com/user/JFlaMusic/videos 这样的浮动页面上执行了下面的代码。但是代码执行不正确。
我希望转到页面末尾,但 last_height
和 new_height
一开始是相同的 while 条件循环。所以 break
被执行了。
为什么会出现这个结果?
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(last_height)
while True:
self.driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
time.sleep(0.5)
new_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(new_height)
if new_height == last_height:
break
last_height = new_height
与其使用看起来相当不可靠的 time.sleep(0.5)
,不如尝试如下实现 ExplicitWait 以等待页面滚动:
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")
print(last_height)
while True:
self.driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
try:
wait(self.driver, 5).until(lambda driver: self.driver.execute_script("return document.documentElement.scrollHeight") > last_height)
except TimeoutException:
break
last_height = self.driver.execute_script("return document.documentElement.scrollHeight")