当前位置: 首页 > 知识库问答 >
问题:

当使用selenium Python向下滚动时,页面不会自动加载

陈铭晨
2023-03-14

我使用无头铬硒包。当我手动访问网站并向下滚动时,它会加载更多的iTen,下面显示的while循环中的列表“nome”会更新。当我使用selenium和一个头部浏览器时,它也可以工作。为什么页面没有加载headless?也许这无关紧要,但我也从ua更改了userAgent。随机发送到ua['Chrome']。

import fake_useragent
import selenium

chrome_options = Options()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument('--incognito')
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=1920,1080")
userAgent = ua['Chrome']
chrome_options.add_argument(f'user-agent={userAgent}')
driver = webdriver.Chrome(executable_path=chromedriver_path, options=chrome_options)
driver.get('https://www.website.com/')
nomes = driver.find_elements_by_css_selector('my.css')
iteracao = 0
        if nomes:
            while iteracao < 3:
                iteracao += 1
                nomes = driver.find_elements_by_css_selector('my.css')
                driver.execute_script("arguments[0].scrollIntoView();", nomes[-1])
                time.sleep(1)
                wait(driver, 10).until(
                    wait_for_more_than_n_elements((By.CSS_SELECTOR, 'my.css'), len(nomes)))

我从这里得到的,

class wait_for_more_than_n_elements(object):
    def __init__(self, locator, count):
        self.locator = locator
        self.count = count

    def __call__(self, driver):
        try:
            count = len(EC._find_elements(driver, self.locator))
            return count >= self.count
        except selexcept.StaleElementReferenceException:
            return False

共有2个答案

谷玉韵
2023-03-14

这对我的网站有效。

loc = nomes[-1].location['y']
driver.execute_script(f"window.scrollTo(0, {loc} + 200);")
driver.execute_script(f"window.scrollTo(0, {loc} + 210);")
晏弘雅
2023-03-14

不久前我也有同样的问题!尝试将这些添加到你的chrome选项中,这对我来说很有用。

chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("disable-infobars")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-dev-shm-usage")

值得注意的是,我想,我听到用户说首先定义--no-沙盒arg很重要,但这对我来说似乎从来都不重要。

 类似资料:
  • 问题内容: 尝试使用selenium-webdriver python向下滚动到页面底部,以便加载更多产品。 该网页已加载,但没有变化。 我想念什么吗? 问题答案: 您可以尝试以下move_up和move_down函数:

  • 问题内容: 我正在尝试从航班搜索页面中抓取一些数据。 此页面的工作方式如下: 您填写表格,然后单击按钮搜索-可以。当您单击按钮时,您将被重定向到包含结果的页面,这就是问题所在。例如,此页面会持续添加一分钟的结果,这没什么大不了的- 问题是要获得所有这些结果。在实际的浏览器中,您必须向下滚动页面,然后才会显示这些结果。因此,我尝试使用Selenium向下滚动。它可能在页面底部如此之快地向下滚动,或者

  • 我正试图从航班搜索页面中获取一些数据。 此页面的工作方式如下: 您填写表格,然后单击“搜索”按钮-这是确定的。当你点击按钮时,你会被重定向到有结果的页面,问题就在这里。这个页面不断添加结果,例如一分钟,这不是什么大问题-问题是要获得所有这些结果。当您在real browser中时,您必须向下滚动页面并显示这些结果。所以我尝试使用Selenium向下滚动。它在页面底部向下滚动的速度可能非常快,或者它

  • 我看了很多问题,但列出的解决方案都没有解决我的问题:Scrollview不会滚动到底部的空白处 ScrollView不会滚动到底部 (Android) ScrollView不会一直滚动到我的线性布局的底部 我有一个具有以下布局的应用程序,其中包含ScrollView中的LinearLayout 基本上,这个布局被用于一个片段。在这个片段中,我用查询网站得到的字符串为tvPowers和tvAbili

  • 问题内容: 我创建了一个带有JTextArea的JFrame。我想在每次追加后自动向下滚动文本区域。我应该如何处理? 我已经尝试过,但是什么都没有改变。 问题答案: 有两种方法(但必须将JTextArea放在JScrollPane中) a)设置插入符号(方法正确) 例如 b)从(从)移至最大值

  • 问题内容: 我已经尝试过使用dynamic.js和下面的代码,但是,当我在IE11中尝试此操作时,每次滚动时它都会一直跳到顶部: 我想使页面在平板电脑,IE10和11上可滚动,以便用户可以像在移动设备上一样向上推动页面以向下滚动。 如何在不跳到顶部的情况下在纯JS或jQuery中做到这一点? 问题答案: 您可以通过记录单击时鼠标的位置以及被拖动时的当前位置来非常简单地完成此操作。尝试这个: 为了防