python - 作业未滚动到网页上的特定文本

标签 python python-3.x selenium scroll web-scraping

我有一个工作完美,除了滚动到这个元素://span[text()="Next Page"] on this page

当我手动滚动时,它往往会起作用。

我尝试解决滚动到此文本的问题:

element = driver.find_element_by_xpath('//span[text()="Next Page"]')
driver.execute_script("return arguments[0].scrollIntoView();", element)

以及:

clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, ('//span[text()="Next Page"]'))))
clickMe2 = driver.find_elements_by_xpath('//span[text()="Next Page"]')
actions = ActionChains(driver)
actions.move_to_element(clickMe2).click()
element = driver.find_element_by_xpath('//span[text()="Next Page"]')
element.location_once_scrolled_into_view
driver.execute_script("arguments[0].scrollIntoView();", clickMe2)

它会执行作业,然后在以下行给出错误:driver.execute_script("arguments[0].scrollIntoView();", clickMe2)

完整错误:

Traceback (most recent call last):
  File "C:/Users/Bain3/PycharmProjects/untitled4/Crownbet.py", line 2674, in <module>
    driver.execute_script("arguments[0].scrollIntoView();", clickMe2)
  File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 532, in execute_script
    'args': converted_args})['value']
  File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 297, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Bain3\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: arguments[0].scrollIntoView is not a function
  (Session info: chrome=61.0.3163.100)
  (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 10.0.15063 x86_64) 

完整code

已更新

我之前已经删除了这个:

#SCROLL_PAUSE_TIME = 0.5


#last_height = driver.execute_script("return document.body.scrollHeight")

#while True:

    #driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")


    #time.sleep(SCROLL_PAUSE_TIME)


    #new_height = driver.execute_script("return document.body.scrollHeight")
    #if new_height == last_height:
        #break
    #last_height = new_height

但是,它似乎滚动整个页面而不是滚动到该特定元素。这是:

clickMe = wait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, ('//span[text()="Next Page"]'))))
element1 = driver.find_element_by_xpath('//span[text()="Next Page"]')
driver.execute_script("return arguments[0].scrollIntoView();", element1)

最佳答案

实际上,您正在向右滚动到所需的元素,但有一个导航面板(带有搜索栏、登录和立即加入按钮的导航面板)固定在顶部并覆盖了“下一步”按钮。您只需向上滚动一点即可使“下一步”按钮可见。尝试下面的代码:

from selenium.webdriver.common.keys import Keys

header = driver.find_element_by_tag_name('header')
driver.execute_script('arguments[0].hidden="true";', header)
element = driver.find_element_by_xpath('//span[text()="Next Page"]')
driver.execute_script("arguments[0].scrollIntoView();", element)
driver.find_element_by_tag_name('body').send_keys(Keys.UP)
element.click()

关于python - 作业未滚动到网页上的特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972535/

相关文章:

python - 如何使用Python+SQLAlchemy远程连接MySQL数据库?

Python 将数据写入文件仅在从控制台运行时有效

python - 对 geopandas 中相交/重叠的几何图形进行分组和组合

linux - 使用机器人框架和 VNCserver 的 Selenium@library 的代理设置

google-maps - 使用 Selenium 放置嵌入的谷歌地图标记

java - 如果网址未打开,如何关闭 selenium webdriver

python - 提取单词后的所有行

python - 如何从 AWS Lambda 函数访问 YAML 文件内的变量?

python - 如果 Pandas 数据框字符串列缺少值,如何小写它?

python - 如何重复使用和多次绘制同一图