【问题标题】:How lookup anchor tag <a> by attribute name and/or value? [duplicate]如何通过属性名称和/或值查找锚标记 <a>? [复制]
【发布时间】:2019-07-21 20:41:24
【问题描述】:

这是我试图自动化的网络:

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

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

目标图片在&lt;li&gt;&lt;a&gt;:

<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="Red" 属性中。

我试过这个:

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

但它似乎没有找到它。

我怎样才能做到这一点?

谢谢

【问题讨论】:

  • 欢迎来到 SO。我建议先阅读 tour,然后阅读 How to AskMinimal, Complete, and Verifiable example,了解 SO 的工作原理以及如何有效地提问。
  • 您的要求是什么?从

    Navy

    中获取字符串“Navy” ??
  • 所以在我的程序中使用 Tkinter 工具用户输入项目和配色。它把他带到了这个项目的链接(我已经想出了怎么做),但我不知道如何抓住那个配色。用户已经定义好了,比如颜色是“自然色”,按照他的定义,如何定位并点击正确颜色的正确图片?没有得到字符串,但如果有意义的话,找到它并单击它。谢谢
  • 但是是的,它位于 itemprop 部分。我如何找到它并单击()它?
  • 我想你的问题一定是:“如何通过文字查找并点击它?”你同意吗?

标签: python selenium web-scraping selenium-chromedriver


【解决方案1】:

这里有一些方法:

  • 您可以使用 xpath 查找拥有data-style-name=YourColor&lt;a&gt;

driver.find_element_by_xpath('//a[@data-style-name="Red"]')
  • 循环遍历所有&lt;a&gt;并将data-style-name属性值与输入颜色进行比较:

elems = driver.find_elements_by_xpath("//a[@href]")
for elem in elems:
    print elem.get_attribute("data-style-name")

【讨论】:

    【解决方案2】:

    使用以下 XPath:

    XPATH : //p[@class='style protect' and normalize-space()='"+COLOR_VALUE_VARIABLE+"']

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      相关资源
      最近更新 更多