[英]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)))
使用WebDriverWait
和element_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.