python - Selenium Python for 循环仅获取第一项
问题描述
我的 for 循环似乎只能从https://public.tableau.com/en-gb/gallery/?tab=viz-of-the-day&type=viz-of-the-day找到第一项,而不是循环遍历所有日期和标题。如果我print(viz)
能看到不同的元素,但这似乎并没有被贯彻。
driver.get("https://public.tableau.com/en-gb/gallery/?tab=viz-of-the-day&type=viz-of-the-day")
wait = WebDriverWait(driver, 10)
time.sleep(10)
vizzes = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".gallery-items-list div.gallery-list-item-container")))
for viz in vizzes:
print(viz)
#publish date
date_id = driver.find_element_by_css_selector('[data-test-id="published-date"]').text
print(date_id)
#name of the viz
viz_name = driver.find_element_by_xpath("//a[contains(@href, '/en-gb/gallery/')]").text
print(viz_name)
对于我尝试使用的 xpath
viz_name = driver.find_element_by_xpath(".//a[contains(@href, '/en-gb/gallery/')]").text
和
viz_name = driver.find_element_by_xpath("//*[contains(@href, '/en-gb/gallery/')]").text
产生了相同的结果。
解决方案
您需要使用viz.find_element..
而不是更正driver.find_element..
:
#publish date
date_id = viz.find_element_by_css_selector('[data-test-id="published-date"]').text
print(date_id)
#name of the viz
viz_name = viz.find_element_by_xpath("//a[contains(@href, '/en-gb/gallery/')]").text
print(viz_name)
推荐阅读
- java - 如何以编程方式在android中使用图像作为线性布局的背景颜色
- javascript - 如何在 html 联系表单中使用 SMTP?
- java - 使用java将文本添加到现有PDF的最后一页
- javascript - 有没有办法将 Bootstrap Datepicker 值从一个组件发送到另一个组件?
- python - 根据评分pyspark为其他列中的每个值过滤列中的前N个值
- python - 如何在服务器上运行 pyautogui 机器人?
- linux - 无法在 ubuntu 20.04 上使用 qt-creator 运行应用程序
- visual-studio-code - VSCode js文件中的GraphQL语法高亮
- javascript - 在 React 中自动填充字段时如何手动聚焦事件?
- angular - Yeoman 生成器的 Office 插件 Angular 应用程序:组件必须具有模板或 templateUrl [使用 Webpack],即使它已声明