简体   繁体   English

如何在 python selenium 滚动网页?

[英]How to scroll a webpage in python selenium?

I am trying to automatically capture the list of participants in a google meet.我正在尝试自动捕获谷歌会议的参与者列表。 I am using Selenium in Python.我在 Python 中使用 Selenium。

I logged in and joined the meeting successfully.我成功登录并加入了会议。 Then while trying to get the elements and get it's text I am encountering problems.然后在尝试获取元素并获取它的文本时遇到问题。

names = driver.find_elements_by_css_selector('div.cSO8I.N4cbF div.G3llDe.Dxboad div.cS7aqe.NkoVdd')

I got a list of elements that follows:我得到了以下元素列表:

[<selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="227cf87e-59ec-4c2e-b880-de9bead540cb")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="c985d1c1-1128-4d82-9864-4d8c087dd4bb")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="d01d2f87-88eb-468b-b748-223c43e61961")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="1d3f114e-786e-4905-a8ea-02353d0da7ef")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="907af305-f9a9-43d1-a08a-e487c3aa18d8")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="3cfedad6-e4cb-49ee-affa-164006bf6894")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="8a10b259-3128-48ea-b717-9976cf2d52cd")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="2c80a0c9-69ac-4d1a-bbf4-7e23a5bb1c4f")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="d947ab6d-b58e-47fe-a8dd-1f8cb7bfafb7")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="f79b2b88-a2b4-482e-ac79-ef93e0758b1d")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="3e1d10af-a8da-415c-8fca-61139246170b")>, <selenium.webdriver.remote.webelement.WebElement (session="8c985f19fd463e89e66778e6065490e7", element="845ea5b8-91b0-4a57-b161-82ff95e1bb2d")>]

Then, I tried extracting the names through a loop然后,我尝试通过循环提取名称

for i in names:
    print(i.text)

It returned me some names but not all and encountered the following error.它返回了一些名字但不是全部,并遇到了以下错误。

Traceback (most recent call last):
  File "<pyshell#12>", line 2, in <module>
    print(e.text)
  File "C:\Users\GUNGUN\AppData\Local\Programs\Python\Python37\Lib\site-packages\selenium\webdriver\remote\webelement.py", line 76, in text
    return self._execute(Command.GET_ELEMENT_TEXT)['value']
  File "C:\Users\GUNGUN\AppData\Local\Programs\Python\Python37\Lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\GUNGUN\AppData\Local\Programs\Python\Python37\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\GUNGUN\AppData\Local\Programs\Python\Python37\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=86.0.4240.193)

I thought of scrolling the web page but in vain.我想滚动 web 页面,但没有成功。

def t():
    n = int(driver.find_element_by_css_selector('div.eUyZxf span.rua5Nb').text.strip('(').strip(')'))
# n giving the number of participants
    L = []
    names = driver.find_elements_by_css_selector('div.cSO8I.N4cbF div.G3llDe.Dxboad div.cS7aqe.NkoVdd')
    while len(L)<n:
        try:
            for i in names:
                L.append(i.text)
        except:
            html.send_keys(Keys.PAGE_DOWN)
    print(L)

It didn't scroll the web page.它没有滚动 web 页面。

And for reference I want to say that in Google Meet interfere scrolling:作为参考,我想说在 Google Meet 中干扰滚动:

滚动我没有结果,我需要滚动到 II

Scrolling in 1 gives no result, I need to scroll at 2. Please help me.滚动 1 没有结果,我需要滚动 2。请帮助我。

You need to move mouse to element first:您需要先将鼠标移动到元素:

ActionChains(driver).move_to_element(By.XPATH,"xpath of right side").perform()

and then, you need to scroll down.然后,您需要向下滚动。

driver.find_element_by_tag_name('html').send_keys(Keys.END)

You can use Keys.PAGE_DOWN but that will direct you to end of the participant list.您可以使用Keys.PAGE_DOWN但这会将您定向到参与者列表的末尾。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM