繁体   English   中英

Selenium 断开链接的 Webdriver 代码片段

[英]Selenium Webdriver Code Snippet for broken Links

我试图使用以下代码片段来验证所有链接是否正常工作


links = driver.find_elements_by_css_selector("a")
for link in links:
    if requests.head(link.get_attribute('href')).status_code == 200:
        print("valid link")
    else:
        print("Broken Link")

它在控制台中给了我这个错误消息:

raise InvalidSchema("No connection adapters were found for '%s'" % url) requests.exceptions.InvalidSchema: No connection adapters were found for 'javascript:window.print()'

javascript:window.print()打开一个打印对话框, requests不知道如何处理它是完全正常的。 您可能想要过滤“链接”,例如javascript:window.print()javascript:alert("something")

您可能希望找到类似以下内容的链接:

links = driver.find_elements_by_xpath('//a[contains(@href, *) and not(contains(@href, "#") or contains(@href, "javascript:"))]')

这应该返回所有锚点,除了包含#javascript:作为href值的锚点(“contain”是部分匹配过滤器)。

您可能需要微调 xpath 以考虑不包含. / (如果定义了基础 url,则可以在没有协议或服务器 url 的情况下找到相对地址)。

暂无
暂无

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

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