我一直在尝试向下滚动iframe来截取屏幕截图,并以为我找到了解决方案,但遇到一个问题,滚动500像素或3000像素会得到相同的结果(以及滚动100像素,但滚动1表示我在页面顶部,所以看上去有点正常)
该解决方案取自this question,而我当前的代码如下:(添加了屏幕截图代码,以防万一,尽管它实际上并不位于同一定义中。
def scroll_iframe(self):
iframe = self.driver.find_element_by_id('js-map-iframe')
self.driver.switch_to.frame(iframe)
self.driver.execute_script("window.scrollTo(0,3000);")
time.sleep(5)
self.driver.switch_to.default_content()
time.sleep(3)
print('iframe scroll_1')
self.driver.set_window_size(1920, 4500)
self.driver.save_screenshot("screenshot.png")
print('screenshot taken')
self.driver.quit()
我不太确定源代码的哪一部分会有用,但是我使用了find_element_by_id,因为代码看起来像这样:
<div class="pt-map-iframe-parent" style="width: 375px; height: 31804px;">
<iframe src="long-test" frameborder="0" id="js-map-iframe" style="width: 375px; height: 31804px; transform: scale(1);"></iframe>
iframe本身的高度为31804,因此iframe的高度应该不是问题。关于如何解决此问题的任何想法,以及为什么设置window.scrollTo(0,500)和(0,3000)都会得到相同的结果?
Window.scrollBy()
Window.scrollBy()
Window.scrollTo()
以截取屏幕截图无效。Window.scrollTo()
元素调用iframe:
参考您可以在以下位置找到几个相关的讨论:
scrollIntoView()
<iframe>