selenium webdriver:无法获取断开的链接

1tuwyuhd  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(210)

这样我就可以用

driver.get('https://www.w3.org/')

但是我想测试的是,如果我给予一个错误链接,我应该得到类似于

This page does not exist.

但是当我试图捕捉这个的时候,我无法得到结果
这是失败的,不能报告故障链路

link = "https://www.w3.org/fault_link"

if driver.find_elements_by_xpath("//*[contains(text(), 'This page does not exist')]"):
    logger.info("Found fault link %s", link)

这也失败了,无法捕捉。

element = driver.find_element(
                    By.XPATH, '//*[@id="__next"]/div[1]/main')

# when I print out the element text, I can see the output
# 404 ERROR
# This page does not exist.
# The page you are looking for could not be found.
# Go back home →
logger.info(element.text)

if e.text=='This page does not exist.':
     logger.info("Found fault link %s", link)

这也失败了

if search("This page does not exist.", element.text):
    logger.info("Found fault link %s", link)

有什么建议吗?

3mpgtkmj

3mpgtkmj1#

您的测试失败,因为您预期会找到不存在的文字。
此文本This page does not exist中,而不是https://www.w3.org/fault_link页面上显示。
您应该在该特定页面上查找的是Document not found文本。
因此,以下代码适用于该特定页面:

url = "https://www.w3.org/fault_link"
driver.get(url)

if driver.find_elements(By.XPATH, "//*[contains(text(), 'Document not found')]"):
    print("Found fault link %s", url)

输出为:

Found fault link %s https://www.w3.org/fault_link

一般来说,你应该明白,每个网站将提出不同的错误/通知不存在的网页。

w6lpcovy

w6lpcovy2#

我的建议是这样做。记住我没有用python编程,只是做了一个快速搜索,以便组装示例:

import requests 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
elements = driver.find_elements(By.XPATH, "//a")
print(len(elements))
links = [elem.get_attribute('href') for elem in elements]
print(links)
x = requests.get(links[0]) 
print(x.status_code)

我正在检查的状态码只有第一个链接上找到的网页。你可以做foreach,如果有东西的状态码〉= 400,那么我们正在谈论的是坏链接。

相关问题