【问题标题】:Pagination <a> tag click slenium not loading but normal driver.get(pagination_link) works?分页 <a> 标记单击 selenium 未加载但正常 webdriver.get(分页链接)有效?
【发布时间】:2021-08-13 10:42:08
【问题描述】:

我正在尝试单击分页链接,但我的请求被阻止了,但是当我直接将分页链接与 driver.get("justdial.com/Delhi/Grocery-Stores/page-2") 一起使用时,它可以工作,你能告诉我为什么点击分页不起作用是什么问题吗?我错过了一些标题或者什么,谢谢你的耐心

这是我打开浏览器和链接的方法:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
import pandas as pd
import time
import os
 
# driver.get method() will navigate to a page given by the URL address
driver.get("https://www.justdial.com/Delhi/Grocery-Stores")
# my logic here sleep , scrape , etc and at end click on pagination link
driver.find_element_by_link_text(str(page_count)).send_keys(Keys.RETURN)
time.sleep(PAGE_PAUSE_TIME)

是的,这点击了正确的元素和链接,但页面显示发生了一些错误,但同一页面在我的普通浏览器上运行良好

【问题讨论】:

    标签: python pandas selenium selenium-webdriver


    【解决方案1】:

    位于可见屏幕视图之外的下一页。
    所以你必须滚动到它才能点击它。
    但是这个特定站点还有其他困难。
    当您向下滚动时,它会加载其他元素,因此下一页按钮将再次出现在可见屏幕之外。
    您可以通过多种方式解决此问题。
    第一个不推荐,但更简单。
    您可以使用 JavaScript 执行器单击下一页元素,如下所示:

    next_page = driver.find_element_by_css_selector("a[rel=next]")
    driver.execute_script("arguments[0].click();", next_page)
    

    更复杂的方法是滚动页面直到下一个页面元素变得可见,然后单击它。
    像这样的:

    next_page = driver.find_element_by_css_selector("a[rel=next]")
    while not next_page.is_displayed():
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
    next_page.click()
    

    【讨论】:

    • 所以你的意思是分页链接需要可见然后才可以工作,但是如果我手动滚动然后单击它也不起作用,如果我也不起作用直接在测试浏览器中直接输入分页url,只有当我使用driver.get(pagination_url)或在普通浏览器中打开时才有效
    • 为了使用 Selenium 点击元素,该元素应该是可见的、可点击的、不被其他元素覆盖等。Selenium 模仿真实的用户 UI 操作。因此,作为用户,您不能单击屏幕外的元素,您必须滚动到它。如果加载了更多元素 - 再次滚动。
    • 作为用户,您可以导航到某个 url,但在这种情况下,这不是通过单击下一页元素来完成的
    • 我可以点击分页链接并加载正确的 url 我已经在我的问题中提到我的问题是这个页面没有加载,我已经解决了滚动等问题,引用我的问题只是为了防止错过了-----"""是的,它点击了正确的元素和链接,但页面显示发生了一些错误,但同一页面在我的普通浏览器上运行良好""""
    • 也许滚动时出现的弹出窗口会阻止您?
    猜你喜欢
    • 2021-06-09
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多