通过xpath查找元素

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

[请帮助我,我正在尝试选择链接的图片(网站上的培训师)

这是我的代码:

login = browser.find_element_by_xpath("a[title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")

这是检查元素代码

img src="https://secure-images.nike.com/is/image/DotCom/CI9367_301_A_PREM?$SNKRS_COVER_WD$&align=0,1" alt="ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date" title="ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date" class="image-component mod-image-component u-full-width" style="opacity: 1; transition: opacity 1s ease 0s;"

这是我得到的错误:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ a [title =” ACG Air Moc 3.0'Cargo Khaki / Oil Green '发布日期“]”}

我正在使用Pycharm

python selenium selenium-webdriver pycharm selenium-chromedriver
4个回答
0
投票

根据错误,Selenium无法找到元素。转到检查元素。找到所需的图像。右键单击该元素,然后转到“复制”->“复制Xpath”。使用该xpath。


0
投票

<img>(不是<a>)不是html的根,因此您需要在xpath中使用//img。您还需要在@

之前添加title
browser.find_element_by_xpath("//img[@title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")

0
投票

U正在处理<img>元素,而不是<a>超链接元素。


0
投票

似乎您距离很近。但是,由于所需的元素是<img>节点而不是使用a,因此您需要使用//img,并且要使用,因此需要在属性名称之前添加@,因此您的代码行将为:

login = browser.find_element_by_xpath("//img[@title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")

但是,更好的方法是按如下方式使用多个属性:

login = browser.find_element_by_xpath("//img[@class='image-component mod-image-component u-full-width' and contains(@title, 'Cargo Khaki')][starts-with(@alt, 'ACG Air Moc 3') and contains(@title, 'Oil Green')]")
© www.soinside.com 2019 - 2024. All rights reserved.