查找具有特定类名的元素

问题描述 投票:0回答:3

对于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?任何好的延伸或什么?

python selenium selenium-webdriver selenium-chromedriver
3个回答
0
投票

我怎样才能找到XPath?任何好的延伸或什么?

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

如果您正在寻找可以尝试不同XPath的工具,那么Chrome的内置开发人员工具控制台可以让您测试Xpath和CSS选择器; enter image description here

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


0
投票

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

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

至于你使用索引号(例如:/ html [1] / body [1])在树上下去的例子,网站的细微变化会使你的脚本失败。找到一种方法来构建更健壮的东西!如果对象的外观事先已知,也可以查看CSS选择器。


0
投票

要在Instagram上获得所有类似按钮,请使用下面的css选择器:

span[aria-label="Like"]

你可以在这里获得一些有用的细节:https://www.w3schools.com/cssref/css_selectors.asp

© www.soinside.com 2019 - 2024. All rights reserved.