查找具有特定类名的元素

时间:2018-09-10 08:32:19

标签: python selenium selenium-webdriver selenium-chromedriver

对于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?有什么好的扩展名吗?

3 个答案:

答案 0 :(得分:0)

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

这也可以理解您正在操作的内容: https://www.w3schools.com/xml/xpath_syntax.asp

对于您使用索引编号(即:/ html [1] / body [1])从树上掉下来的示例,站点中的微小变化将使您的脚本失败。找到一种方法来构建更强大的功能!如果您事先知道对象的外观,还可以查看CSS选择器。

答案 1 :(得分:0)

要在instagram上获得所有类似的按钮,请使用以下CSS选择器:

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

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

答案 2 :(得分:0)

  

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

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

如果您正在寻找一种工具来试验不同的XPath,则Chrome的内置开发人员工具控制台可让您同时测试Xpath和CSS选择器; enter image description here

在按类名查找元素的特定方案中,CSS选择器比XPath更好,因为CSS选择器会将多个类视为数组,因为XPath将“类”视为文字字符串,因此为什么需要使用“包含”。