使用Selenium在python中查找损坏的链接。没有提供的架构错误

时间:2018-08-17 18:36:17

标签: python selenium testing automation webdriver

我正试图在页面中找到损坏的链接。我正在使用此代码: (我不会显示原始URL和元素ID数据,因为它是机密信息,而我正在使用显式等待,因为它需要先登录才能访问页面)

import requests
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options, 
executable_path='C:\\Chromedriver\\chromedriver.exe')
driver.get('https://pagename.com')
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.ID, 
'elementID')))
links = driver.find_elements_by_css_selector("a")
for link in links:
    r = requests.head(link.get_attribute('href'))
    print(link.get_attribute('href'), r.status_code)

问题是此代码适用于大多数页面。但是,我正在使用的页面的href中没有完整的URL,只有'/ extension'。所以我得到了 requests.exceptions.MissingSchema:无效的网址“无”:未提供任何架构。也许您是说http://None?错误,并且我对将URL与href结合起来感到不安。如何在循环中使用带有href的URL将其加入?

2 个答案:

答案 0 :(得分:0)

“ +”串联运算符可以工作。

baseURL = "https://domainName.com/resource/" 
for link in links:
r = requests.head(link.get_attribute('href'))
actualURL=baseURL + link.get_attribute('href')

答案 1 :(得分:0)

尝试

r = requests.head("https://pagename.com/"+link.get_attribute('href'));
print(("https://pagename.com/"+link.get_attribute('href')), r.status_code)