如何使用图片的src(Selenium,Python)查找和点击图片链接

时间:2019-05-15 15:06:54

标签: python selenium

我想单击图像链接,我需要能够通过其src找到它,但是由于某种原因,它仍然无法正常工作。这有可能吗?这就是我正在尝试的:

#Find item
item = WebDriverWait(driver, 100000).until(EC.presence_of_element_located((By.XPATH, "//img[@src=link]")))
#item = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//img[@alt='Bzs36xl9 xa']")))
item.click()

link = //上面的代码中的assets.supremenewyork.com/170065/vi/BZS36xl9-xA.jpg。这与下面的HTML匹配。 第二个定位器有效(使用alt查找图像),但是只有在程序实际运行时,我才具有图像源。

网页的HTML:

<article>
   <div class="inner-article">
      <a style="height:81px;" href="/shop/accessories/h68lyxo2h/llhxzvydj">
         <img width="81" height="81" src="//assets.supremenewyork.com/170065/vi/BZS36xl9-xA.jpg" alt="Bzs36xl9 xa">
      </a>
   </div>
</article>

我不明白为什么通过alt查找而不是src可行,这可能吗?我看到了另一个类似的问题,这是我在哪里找到解决方案,但对我而言不起作用。预先感谢。

编辑 要找到我必须通过JSON格式通过网站解析的链接,请使用以下代码:

#Loads Supreme JSON website into an object
url = urllib2.urlopen('https://www.supremenewyork.com/mobile_stock.json')
obj = json.load(url)

items = obj["products_and_categories"]["Accessories"]

itm_name = "Sock"
index = 0;
for i in items:
        if(itm_name in items[index]["name"]):
                found_url = i["image_url"]
                break
        index += 1

str_link = str(found_url)
link = str_link.replace("ca","vi")

2 个答案:

答案 0 :(得分:0)

new QQmlComponent(&engine, QStringLiteral("qrc:/ui-components/MessageDialog.qml"));

在这里,您的问题,我不敢相信它没有让我惊讶。您要让驱动程序查找一个src为“ link”的元素,而不是您先前定义的变量link。 idk如何将变量传递到xpath中,但我确实知道您可以在调用它之前使用stringFormat创建正确的xpath字符串。

我也不会说python,所以这里有一些伪Java / c#可以帮助您获取图片

item = WebDriverWait(driver, 100000).until(EC.presence_of_element_located((By.XPATH, "//img[@src=link]")))

答案 1 :(得分:0)

使用WebDriverWaitelement_to_be_clickable。请尝试以下xpath。希望这会起作用。

link ='//assets.supremenewyork.com/170065/vi/BZS36xl9-xA.jpg'
item = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='inner-article']/a/img[@src='{}']".format(link))))
print(item.get_attribute('src'))
item.click()