3

我将 selenium 与 python 3 和 Chrome 驱动程序一起使用。我正在尝试在 chrome 商店 URL 中执行滚动。

这个:https ://chrome.google.com/webstore/detail/online-game-zone-new-tab/abalcghoakdcaalbfadaacmapphamklh

无论我尝试了什么 - 该网站都不会滚动。尝试运行“window.scrollBy”和“window.scrollTo”。尝试先点击“body”,然后点击其他元素 - 没有。

当前代码:

driver.maximize_window()
driver.get(url)
time.sleep(4)
driver.execute_script("window.scrollBy(0, 500)")

可能是什么问题呢?我不想发送“向下”键或“向下翻页”,因为我相信我需要更精确。

4

2 回答 2

1

将元素滚动到视图中似乎在该网页上运行良好。这是一个例子:

footer=driver.find_element_by_class_name('e-f-ra-gj')
driver.execute_script("arguments[0].scrollIntoView()", footer)
于 2020-05-19T14:30:13.940 回答
0

如果您观察chrome 商店页面,该页面有一个固定在页面顶部的标题。所以当window对象被调用时,焦点会跳转到页面的顶部,将文档留在固定的标题后面。

您可以在偏移 html 锚点以调整固定标头中找到详细讨论

此外,有时 ChromeDriver 非常快,并且scrollTo()在 Chrome 的默认滚动到 html 锚点事件之前触发操作。在这些情况下,一个可能的解决方案是引入一些延迟,如下所示:

setTimeout(function() {window.scrollTo(0, y);},1)

您可以在 Chrome 中使用 scrollTo() 的 JavaScript 问题中找到详细讨论

作为替代方案,要在 chrome 商店URL中执行滚动,您需要为您的选择诱导WebDriverWait,可以使用以下 基于定位器策略的解决方案:visibility_of_element_located()

  • 使用scrollIntoView()

    driver.get('https://chrome.google.com/webstore/detail/online-game-zone-new-tab/abalcghoakdcaalbfadaacmapphamklh')
    driver.execute_script("arguments[0].scrollIntoView();", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h2[text()='Related']"))))
    
  • 浏览器快照:

有关的

于 2020-05-19T14:30:55.960 回答