如何查找锚标记<a> by attribute name and/or value?

时间:2019-02-28 01:40:31

标签: python selenium web-scraping selenium-chromedriver

This is the web that I am trying to automate:

https://www.supremenewyork.com/shop/sweatshirts/xi9sboa21/u2te1fdw8 imagen

我的要求是根据输入的颜色单击图像。例如,如果输入“红色”作为输入,则必须单击上一张图片中的红色运动衫。

目标图像在<li><a>中:

<ul class="styles">
   <li><a class="" data-images="..." data-style-name="Red" data-style-id="22898" href="...">
     <img src="//assets.supremenewyork.com/168724/sw/RymAY-fhCvA.jpg" alt="Rymay fhcva" width="32" height="32"></a>
   </li>
   <li><a class="" data-images="..." data-style-name="Natural" data-style-id="22899" href="...">
     <img src="//assets.supremenewyork.com/168722/sw/P9adXZbmQQ4.jpg" alt="P9adxzbmqq4" width="32" height="32"></a>
   </li>
   <li><a class="" data-images="..." data-style-name="Navy" data-style-id="22900" href="...">
     <img src="//assets.supremenewyork.com/168723/sw/nC1YwBFpU5g.jpg" alt="Nc1ywbfpu5g" width="32" height="32"></a>
   </li>
   <li><a class="" data-images="..." data-style-name="Black" data-style-id="22901" href="...">
     <img src="//assets.supremenewyork.com/168721/sw/viAmPE40S9U.jpg" alt="Viampe40s9u" width="32" height="32"></a>
   </li>
</ul>

data-style-name =“红色” 属性中。

我尝试过:

driver.find_element_by_xpath('//a[@itemprop="model">{}</p>]'.format(color.get()))

但是似乎找不到它。

我该如何实现?

谢谢

2 个答案:

答案 0 :(得分:0)

这里有一些方法:

  • 您可以使用xpath查找拥有<a>的{​​{1}}:

data-style-name=YourColor
  • 浏览所有driver.find_element_by_xpath('//a[@data-style-name="Red"]') ,并将数据样式名称属性值与输入颜色进行比较:

<a>

答案 1 :(得分:0)

使用以下XPath:

XPATH: // p [@ class ='style保护'和normalize-space()='“ + COLOR_VALUE_VARIABLE +”']

driver.find_element_by_xpath("//p[@class='style protect' and normalize-space()='"+COLOR_VALUE_VARIABLE+"']")