selenium css_selector斗争

时间:2017-05-10 09:47:27

标签: python selenium css-selectors

我有一个读取

的css选择器

#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

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

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

最好

安达

1 个答案:

答案 0 :(得分: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)")))