繁体   English   中英

如何使用图像的src(Selenium,Python)查找并单击图像链接

[英]How to find and click an image link using the image's src (Selenium, Python)

我想点击图片链接,我需要能够通过它的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")
 item = WebDriverWait(driver, 100000).until(EC.presence_of_element_located((By.XPATH, "//img[@src=link]"))) 

继承你的问题,我不敢相信它没有跳出来。 您要求驱动程序找到一个src为“link”的元素,而不是您之前定义的变量链接。 Idk如何将变量传入xpath但我知道你可以在调用之前使用stringFormat创建正确的xpath字符串。

我也不会说python,所以这里有一些伪java / c#来帮助你了解图片

String xPathString = String.Format("//img[@src='{0}']", link);
item = WebDriverWait(driver, 100000).until(EC.presence_of_element_located((By.XPATH, xPathString)))

使用WebDriverWaitelement_to_be_clickable 。尝试以下xpath.Hope这将工作。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM