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

标签 python selenium web-scraping xpath webdriverwait


我的 **Web Scraping** 用例面临着有趣的问题。我需要获取最新的 **Google map 评论**。
我想按最新日期对评论进行排序。我观看的所有教程都是英文的,但在我的母语中,用户界面与这些教程中的不同。
我可以使用 **Selenium** 和按钮的 **XPATH** 单击按钮,但我不知道如何从可见的下拉菜单中更改排序选项。

# Click the sort button
driver.find_element_by_xpath('//*[@id="pane"]/div/div[1]/div/div/div[2]/div[8]/button').click()

Chrome inspection

select_by_visible_text()select_by_value() 对我不起作用,因为我无法选择按钮并且不适用于 div。

我正在使用的网址:Link
查看我的 UI 更改为立陶宛语言。

最佳答案

首先,您必须学习如何创建正确的 XPath 定位器。
长 XPath 表达式太脆弱。
“对评论进行排序”按钮定位器而不是
//*[@id="pane"]/div/div[1]/div/div/div[2]/div[8]/button 可以
//button[@aria-label='对评论进行排序']
//按钮[@data-value='排序']
单击此按钮后,要按最新日期对评论进行排序,您可以单击此元素://li[@data-index='1']
所以基本上这会起作用:

driver.find_element_by_xpath("//li[@data-index='1']").click()

但是由于您需要在单击“排序”按钮后等待对话框打开,因此您需要利用预期条件等待,如下所示:

wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//li[@data-index='1']"))).click()

为此,您将需要以下导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

关于python - 使用 Selenium 更改 Google map 评论排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70589658/

相关文章:

python - 使用 selenium 和 python 捕获 AJAX 响应

python - 即使在更改 header 和 IP 后,验证码也会使用请求。我是如何被跟踪的?

python - Airflow :当 on_success_callback 执行带参数的函数时

python - 如何使用 matplotlib 绘制线段的线性回归

python - "Flexible"MySQL 限制

java - Selenium 和 Java 中的预期条件 "OR"

Java-Selenium 允许弹出窗口

python - BeautifulSoup - 嵌套表

python - os.path.exists 无法识别 C :\Windows\system32\drivers 下的子目录

java - 当我使用浏览器运行自动测试时出错。怎么运行呢?