【问题标题】:Find elements with specific class name查找具有特定类名的元素
【发布时间】:2018-09-10 08:32:18
【问题描述】:

对于 chrome,我安装 ChroPath 以在页面上查找元素。

我想在 Instagram 页面上找到类似元素的 XPath,但似乎不起作用:

//span[contains(@class,'glyphsSpriteHeart__outline__24__grey_9 u-__7')] 

我也试试:

/html[1]/body[1]/div[3]/div[1]/div[2]/div[1]/article[1]/div[2]/section[1]/span[1]/button[1]/span[1]

当硒点击时:

elenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div._2dDPU.vCf6V div.zZYga div.PdwC2._6oveC article.M9sTE.L_LMM.JyscU div.eo2As section.ltpMr.Slqrh span.fr66n button.coreSpriteHeartOpen.oF4XW.dCJp8 > span.glyphsSpriteHeart__outline__24__grey_9.u-__7"}

如何找到 XPath?有什么好的扩展吗?

【问题讨论】:

  • 分享 HTML 代码或网站链接。
  • @cruisepandey 它的 instagram 页面,我想要从网络上发布照片
  • 可以分享HTML代码吗?
  • 它的 instagram.com 和来自网络的任何照片。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

如何找到 XPath?有什么好的扩展吗?

您无法“找到”元素的 Xpath。有很多很多 XPath 可以找到任何元素。有些会稳定,有些会不稳定。决定使用哪个 Xpath 取决于您对 Selenium 的理解和经验,以及您对被测应用程序的编写和行为方式的理解。

如果您正在寻找一种工具来试验不同的 XPath,那么 Chrome 的内置开发者工具控制台允许您测试 Xpath 和 CSS 选择器;

在您关于按类名查找元素的特定场景中,CSS 选择器是比 XPath 更好的选择,因为 CSS 选择器会将多个类视为一个数组,而 XPath 将“类”视为文字字符串,因此您需要使用“包含”。

【讨论】:

    【解决方案2】:

    这可能会有所帮助: https://selectorgadget.com/

    这也是,要了解你在操纵什么: https://www.w3schools.com/xml/xpath_syntax.asp

    至于您使用索引号(即:/html[1]/body[1])沿树向下的示例,站点中的轻微更改将使您的脚本失败。找到一种方法来构建更强大的东西!如果您事先知道对象的外观,还请查看 CSS 选择器。

    【讨论】:

      【解决方案3】:

      要在 instagram 上获得所有喜欢的按钮,请使用下面的 css 选择器:

      span[aria-label="Like"]
      

      您可以在此处获得一些有用的详细信息:https://www.w3schools.com/cssref/css_selectors.asp

      【讨论】:

        猜你喜欢
        • 2023-01-14
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        相关资源
        最近更新 更多