【问题标题】:selenium css_selector struggleselenium css_selector 斗争
【发布时间】:2017-05-10 09:47:26
【问题描述】:

我有一个 css-selector 读取

#block-a4e7-et-lists-a4e7-et-lists-content > div > div > div.row > div.col-md-9.col-sm-12.col-lg-9.col-xs-12 > div > div.a4e7-fw-pagination > div:nth-child(5)

在网页上

http://www.ecotechnology.at/de/content/ausbildung-weiterbildung-und-gr%C3%BCne-stellenangebote?etsv=karriere_at

但即使经过长时间的努力,我也无法使用 selenium 访问它 driver.find_element_by_css_selector()python 中的函数。

你能帮我解决这个问题吗?

最好的 安达

【问题讨论】:

  • 您只想使用 xpath 还是 css-selector?
  • 您要访问的内容是什么。请描述性
  • 请显示您的代码、预期响应和实际响应。
  • driver.find_element_by_css_selector() 与提供的CSS 选择器在分页时返回<div class="pg-loop">4</div>,即使没有等待。您可以分享异常日志或更多详细信息吗?

标签: python selenium css-selectors


【解决方案1】:

选择器本身太脆弱因为:

  • 它严重依赖于直接的父子关系,因此也依赖于页面结构
  • 它使用像 col-xs-12 这样的面向布局的类,这些类通常过于宽泛,被更改的机会更大

相反,我会使用以下 CSS 选择器:

.content .a4e7-fw-pagination > div:nth-child(5)

您可能还遇到了时间问题 - 当您搜索该元素时,它还不存在。解决此类问题的常用方法是Explicit Wait。具体来说,在您的情况下,您可能会遇到以下情况:

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

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".content .a4e7-fw-pagination > div:nth-child(5)")))

【讨论】:

  • alecxe,非常感谢您非常有帮助的评论和相关解释。这就是我一直在寻找的。也感谢其他人的努力。
猜你喜欢
  • 2020-09-18
  • 2018-05-23
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多