【问题标题】:Is there a way to include the HREF in the CSS Selector有没有办法在 CSS 选择器中包含 HREF
【发布时间】:2017-08-26 09:22:43
【问题描述】:

假设我想点击https://www.w3schools.com/cssref/css_selectors.asp 上的 w3schools.com(左上角) 所以像这样..

a[href*="w3schools"]

更具体地说..

div.w3-container.top > a[href*="w3schools"][.w3schools-logo]

类似....driver.find_elements_by_css_selector("div.w3-container.top > a[href*="w3schools"][.w3schools-logo]")这在 Selenium 中似乎不起作用。

我问的可能吗?使用 a[href*="w3schools"] 将大大缩小 HREF 的 CSS 选择器,而无需求助于页面的任何其他元素。

【问题讨论】:

  • 你试过其他选择器吗? a[href="//www.w3schools.com"]a[href$="w3schools.com"]
  • 你的选择器也明显错误,应该是div.w3-container.top > a[href*="w3schools"].w3schools-logo
  • @theonlygusti 我倾向于: driver.find_elements_by_css_selector("div.w3-container.top > a[href*="w3schools"].w3schools-logo") SyntaxError: invalid syntax with a ^ 在“w3schools”下方
  • 也许 selenium 不支持那种选择器。看看我的第一条评论,试试那些。
  • @theonlygusti 我相信你是对的。谢谢你的帮助。其他选择器确实可以完美工作:)。我会在 3 分钟内标记你的答案

标签: python css selenium selenium-webdriver


【解决方案1】:

根据您告诉我的情况,这看起来像是您的 python 中的错误,而不是您的 CSS 中的错误。

这是您当前的代码:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​="w3schools"]")

改成这样:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​='w3schools']")

基本上,在您的 CSS 中使用单引号 (')。


尝试以下选择器之一:

div.w3-container.top > a[href*='w3schools']
div.w3-container.top > a
div.w3-container.top > a.w3schools-logo
div.w3-container.top > a.w3schools-logo[href*='w3schools']

您的选择器有类似 a[href*='w3schools'][.w3schools-logo] 的内容,这只是不正确的 CSS。

如果你想将一个类选择器和一个属性选择器结合起来,它应该是这样的:

a.w3schools-logo[href*='w3schools']

【讨论】:

  • 我正在使用 Python 3 和 a.w3schools-logo[href*="w3schools"] 或 driver.find_elements_by_css_selector("a.w3schools-logo[href*="w3schools"]") 没有似乎工作。它不断强调 w3schools besdie Href*= 并说未解决的参考。
  • @Hector77 使用这个 python 代码:driver.find_elements_by_css_selector('a.w3schools-logo[href*‌​="w3schools"]') 而不是你当前的。我更新了我的答案
【解决方案2】:

你的选择器几乎是正确的——你只需要用单引号替换双引号:

href*‌​‌​="w3schools" -> href*‌​‌​='w3schools'

并在谓词中明确指定class属性节点类型:

[.w3schools-logo] -> [class='w3schools-logo']

所以下面应该可以正常工作:

driver.find_elements_by_css_selector("div.w3-container.top > a[href*='w3schools'][class='w3schools-logo']")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2015-12-18
    • 2014-04-01
    • 1970-01-01
    相关资源
    最近更新 更多