想解释之间有什么区别的offsetHeight,clientHeight和scrollHeight或offsetWidth,clientWidth和scrollWidth?
在客户端工作之前必须知道这种差异.否则他们的一半生命将用于修复UI.
小提琴或下面的内联:
function whatis(propType) {
var mainDiv = document.getElementById("MainDIV");
if (window.sampleDiv == null) {
var div = document.createElement("div");
window.sampleDiv = div;
}
div = window.sampleDiv;
var propTypeWidth = propType.toLowerCase() + "Width";
var propTypeHeight = propType + "Height";
var computedStyle = window.getComputedStyle(mainDiv, null);
var borderLeftWidth = computedStyle.getPropertyValue("border-left-width");
var borderTopWidth = computedStyle.getPropertyValue("border-top-width");
div.style.position = "absolute";
div.style.left = mainDiv.offsetLeft + Math.round(parseFloat((propType == "client") ? borderLeftWidth : 0)) + "px"; …Run Code Online (Sandbox Code Playgroud)我成功地使用Selenium和PhantomJS来重新加载动态加载的无限滚动页面,如下例所示.但是如何修改它以便不是手动设置一些重载,程序在达到最低点时停止了?
reloads = 100000 #set the number of times to reload
pause = 0 #initial time interval between reloads
driver = webdriver.PhantomJS()
# Load Twitter page and click to view all results
driver.get(url)
driver.find_element_by_link_text("All").click()
# Keep reloading and pausing to reach the bottom
for _ in range(reloads):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(pause)
text_file.write(driver.page_source.encode("utf-8"))
text_file.close()
Run Code Online (Sandbox Code Playgroud) 我试图滚动到页面的末尾,以便我可以使所有数据可见并提取它.我试图找到它的命令,但它在java(driver.executeScript)中可用,但找不到python.现在我正在使计算机按下结束键一千次:
while i<1000:
scroll = driver.find_element_by_tag_name('body').send_keys(Keys.END)
i+=1
Run Code Online (Sandbox Code Playgroud)
我还尝试了driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")但它滚动到加载页面的末尾和END键相同的东西.一旦到达页面底部,下一个内容就会加载.但现在它不再滚动.
我知道会有一个非常好的选择.请帮助.
我正在使用FirefoxDriver webdriver.在firefox窗口中加载的页面是一个大页面,我想使用selenium滚动该页面.
我想知道如何做到这一点.
谢谢.
当我尝试单击链接时,我使用 codeception 进行的一项测试出现问题,窗口滚动到浏览器认为它应该去的位置,但是,我的网站有一个导航栏附加到窗口底部,所以当浏览器停止滚动,底部导航覆盖链接。
因此,测试失败。有谁知道如何将其配置为滚动得更远一点?使用 Codeception 1.8.5。
谢谢
我正在使用 selenium 来抓取无限滚动页面。
我正在尝试使用此代码:
import time
import pandas as np
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
url = 'https://twitter.com/search?f=tweets&q=csubwaystats%20since%3A2018-05-28%20until%3A2018-08-28'
browser.get(url)
time.sleep(1)
SCROLL_PAUSE_TIME = 0.5
# Get scroll height
last_height = webdriver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
webdriver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = webdriver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height …Run Code Online (Sandbox Code Playgroud) 我正在研究一个 Linkedin 网络抓取项目。我正在尝试获取某人感兴趣的公司列表(注意我没有使用 API)。这是一个动态网站,所以我需要在抓取公司名称的同时向下滚动。我知道如何在主窗口中执行此操作,但由于兴趣是一个弹出窗口,因此滚动解决方案不起作用。到目前为止我的代码是:
from selenium.webdriver.common.keys import Keys
bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
bar.send_keys(Keys.END)
Run Code Online (Sandbox Code Playgroud)
由于它不起作用,我也尝试过:
bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', bar)
Run Code Online (Sandbox Code Playgroud)
问题是我不是在弹出窗口上操作,而是在主窗口上操作,所以它没有达到预期的效果。
请帮忙,我想向下滚动到包的末尾,但它停止了。我尝试的代码在这里
browser = webdriver.Chrome()
browser.get(url)
button = browser.find_element_by_tag_name("html")
old=""
new=" "
while len(new)>len(old):
old = browser.page_source
button.send_keys(Keys.END)
browser.implicitly_wait(40)
new = browser.page_source
Run Code Online (Sandbox Code Playgroud) 我有一个网站,我想使用 Selenium 以及 Chrome 和 Python 来滚动浏览。以前,当我想向下滚动时,我总是给出以下命令:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
Run Code Online (Sandbox Code Playgroud)
但是,由于我不明白的原因,该网站阻止我滚动。有人有建议吗?
以下是访问我遇到问题的页面的方法:
在标记为重复之前,请考虑我已经浏览了许多相关的堆栈溢出帖子,以及网站和文章。我还没有找到解决方案。
这个问题是这个问题的后续,Selenium Webdriver 没有找到 XPATH 尽管看似相同的字符串。我通过更新代码以更优雅的方式工作,确定问题实际上并非来自 xpath 方法:
for item in feed:
img_div = item.find_element_by_class_name('listing-cover-photo ')
img = WebDriverWait(img_div, 10).until(
EC.visibility_of_element_located((By.TAG_NAME, 'img')))
Run Code Online (Sandbox Code Playgroud)
这适用于前 5ish 元素。但是在那之后它超时了,通过获取 img_div 的内部 html 并打印它,我发现对于超时的元素,而不是我想要的图像,有一个带有“lazyload-placeholder”类的 div。这导致我抓取延迟加载的元素,但我找不到答案。如您所见,我正在使用 WebDriverWait 尝试为其加载时间,但我也尝试了站点范围的等待调用以及 time.sleep 调用。等待似乎并不能解决它。我正在寻找处理这些延迟加载图像的最简单方法,最好是在 Selenium 中,但如果有其他库或产品可以与我已经拥有的 Selenium 代码一起使用,那就太好了。任何帮助表示赞赏。
我想在需要向下滚动的 Youtube 中启用评论框。
这是我现在正在做的事情:-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.youtube.com/watch?v=l5LfjYmNEJs&t=160s")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
Run Code Online (Sandbox Code Playgroud)
但它只会向下滚动一点,但不足以启用评论框。
我该怎么办?
javascript python selenium selenium-chromedriver selenium-webdriver
python ×7
selenium ×7
javascript ×3
web-scraping ×2
codeception ×1
dom ×1
driver ×1
html ×1
java ×1
lazy-loading ×1
linkedin ×1
offsetheight ×1
phantomjs ×1
php ×1
python-3.x ×1
webdriver ×1