【问题标题】:Find the name of a link image with Selenium in Python在 Python 中使用 Selenium 查找链接图像的名称
【发布时间】:2017-11-15 10:26:32
【问题描述】:

我有一个带有链接的 html 文件,并且想区分链接是图像还是链接是文本。我在 Firefox 或 PhantomJS 浏览器中使用 Python 3 和 Selenium。我们的目标是有一个自动程序来遍历数百个 html 文件并找到带有图像的链接。

我做什么: 我首先只关注一个 html 文件。 在第一步中,我获取了 html 文件中所有图像的名称,我知道其中一个图像是链接,而其他图像不是。我将图像称为 IMAGENAME。

然后我尝试推导一个或多个图像是否是链接。我用:

driver.find_element_by_xpath('(//a[/img[contains(text(),"'+IMAGENAME[j]+'")]])')
or 
driver.find_element_by_xpath('//a[/img[contains(@src,IMAGENAME[j])]]') 
or 
driver.find_element_by_xpath('//a/img[contains(@src,IMAGENAME[j])]') 
with j = 0 (image is not a link) and j = 1 (image is a link).

在每种情况下,我都会收到相同的错误消息,它告诉我调用图像的方式一定是错误的:

NoSuchElementException: Message: no such element: Unable to locate element:...

当我离开 //a 部分并仅使用 //img 时,我会得到所有图像而没有错误消息。

在链接中调用图像时我做错了什么?有没有其他方法可以做到这一点?

【问题讨论】:

  • 我不确定我能否正确理解您的目标,但//a[img] 将返回带有图像的链接和//a[not(img)]- 带有文本的链接。请注意,如果您想在XPath 中使用j 变量,您应该使用'xpath expression with %s variable' % j,而不是'xpath expression with j variable'
  • 如果我没记错的话,\\a 代表锚点,而您可能正在寻找 href?

标签: python html selenium selenium-webdriver hyperlink


【解决方案1】:

如果您只是为所有包含图片的链接寻找 src 属性,您可以使用类似的东西:

imageLinks = driver.find_elements_by_xpath("//a//img")
imageNames = []
for element in imageLinks
    imageNames.add(element.get_attribute("src"))

【讨论】:

  • 嗨!谢谢!那太棒了!我在 for 循环之后添加了 ':' 并使用了 'append' 而不是 'add'。
  • 正确!很高兴它奏效了。对不起'添加'。我对 python 的了解还不够。
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 2017-03-17
  • 2020-07-18
  • 2016-06-08
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多