为什么出现以下提到的错误?

时间:2018-10-22 12:46:41

标签: python-3.x selenium

import requests
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
links = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", links)
driver = webdriver.Chrome(chrome_options=chrome_options, 
executable_path="F:\\automation\\chromedriver.exe")
driver.maximize_window()
driver.get('https://google.com/')
links = driver.find_elements_by_tag_name("a")
for link in links:
    r = requests.head(link.get_attribute('href'))
    print(link.get_attribute('href'), r.status_code, 'front_page')
driver.quit()

我收到此错误:

Traceback (most recent call last):
File "F:/automation/frontpages.py", line 15, in <module>
r = requests.head(link.get_attribute('href'))
File "F:\automation\venv\lib\site-packages\requests\api.py", line 101, in head return request('head', url, **kwargs)
File "F:\automation\venv\lib\site-packages\requests\api.py", line 60, in request return session.request(method=method, url=url, **kwargs)
File "F:\automation\venv\lib\site-packages\requests\sessions.py", line 524, in request resp = self.send(prep, **send_kwargs)
File "F:\automation\venv\lib\site-packages\requests\sessions.py", line 631, in send adapter = self.get_adapter(url=request.url)
File "F:\automation\venv\lib\site-packages\requests\sessions.py", line 722, in get_adapter raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for 'mailto:care@pushengage.com'

并且我想在测试用例通过后将所有链接导出到HTML表中

为什么我会收到此错误?

1 个答案:

答案 0 :(得分:0)

某些链接具有不是http url的mailto链接。您正尝试使用mailto链接(mailto:some@somepage.com)进入r = request.head。这不是http请求,所以您会收到此错误。

在findelements本身中过滤那些无效链接。

links = driver.find_elements_by_xpath("//a[not(contains(@href,'mailto'))][contains(@href,'pushengage.com')]")
for link in links:
    r = requests.head(link.get_attribute('href'))
    print(link.get_attribute('href'), r.status_code, 'front_page')
driver.quit()