python - 如何使用 selenium ChromeDriver 滚动 Google map 上的侧边栏以加载更多结果?

标签 python html selenium selenium-webdriver scroll

我在尝试使用 Selenium ChromeDriver 向下滚动谷歌地图结果页面的侧边栏时遇到了问题。我试图获得第 6 个结果,但在您向下滚动之前结果不会完全加载。使用 find_element_by_xpath 方法,我能够成功访问结果 1-5 并分别单击它们,但是在尝试使用 actions.move_to_element(link).perform() 滚动到第 6 个元素的方法,它不起作用并抛出错误消息。

我得到的错误是: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:

但是,我知道这个元素存在,因为当我手动滚动并加载更多结果时,Xpath 工作正常。我究竟做错了什么?我花了很多时间试图解决这个问题,但我无法解决可用的内容。感谢您提供的任何帮助或见解,谢谢!

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup as soup
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://www.google.com/maps")
time.sleep(7)
page = soup(driver.page_source, 'html.parser')

#find the searchbar, enter search, and hit return
search = driver.find_element_by_id('searchboxinput')
search.send_keys("dentists in Austin Texas")
search.send_keys(Keys.RETURN)
driver.maximize_window() 

time.sleep(7)

#I want to get the 6th result down but it requires a sidebar scroll to load
link = driver.find_element_by_xpath("//*[@id='pane']/div/div[1]/div/div/div[4]/div[1]/div[13]/div/a")

actions.move_to_element(link).perform()

link.click()

time.sleep(5)

driver.back()```

最佳答案

我找到了一个有效的解决方案,它是从 selenium 的 javascript 接口(interface)中定位 XPATH 中的元素。然后,您必须在一条指令上执行两个命令(定位和滚动)

driver.executeScript("var el = document.evaluate('/html/body/jsl/div[3]/div[10]/div[8]/div/div[1]/div/div/div[4]/div[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; el.scroll(0, 5000);");

这是唯一对我有用的解决方案

关于python - 如何使用 selenium ChromeDriver 滚动 Google map 上的侧边栏以加载更多结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67783868/

相关文章:

html - 无论溢出属性如何,Div 内容都会扩展页面大小而不是滚动其内容

javascript - 如何用 JavaScript 重新加载 div?

git - 如何根据 git 提交运行机器人框架测试?

python - 去除字符的所有尾随出现

html - 使用表单进行按钮导航并且按钮不出现

python - 使用 Selenium 更改 Google map 评论排序

c# - 无法使用 CSS 选择器定位链接

python - 删除这些元组列表中重复的列表组合的元组

python - 使用 .fit_generator() 在 keras 中训练 GAN

python - 如何在 python/pygame 中制作按钮?