我想单击图像链接,我需要能够通过其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")
答案 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)
使用WebDriverWait
和element_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()