selenium.common.exceptions.invalidargumentexception:消息:使用selenium python从文本文件读取的URL调用get()时发生无效参数错误

5f0d552i  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(346)

我在一个.txt文件中有一个url列表,我想使用selenium运行它。
假设文件名为b.txt,其中包含2个URL(精确格式如下):https://www.google.com/,https://www.bing.com/,
我要做的是让selenium运行这两个url(从.txt文件),但是似乎每次代码到达“driver.get”行时,代码都会失败。

url = open ('b.txt','r')
url_rpt = url.read().split(",")
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
for link in url_rpt:
   driver.get(link)
driver.quit()

当我运行代码时得到的结果是

Traceback (most recent call last):
File "C:/Users/ASUS/PycharmProjects/XXXX/Test.py", line 22, in <module>
driver.get(link)
File "C:\Users\ASUS\AppData\Local\Programs\Python\Python38\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "C:\Users\ASUS\AppData\Local\Programs\Python\Python38\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\ASUS\AppData\Local\Programs\Python\Python38\lib\site- 
packages\selenium\webdriver\remote\errorhandler.py", line 242, in 
check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid 
argument
(Session info: headless chrome=79.0.3945.117)

关于如何重新编写代码有什么建议吗?

bvk5enib

bvk5enib1#

此错误消息。。。

Traceback (most recent call last):
  .
    driver.get(link)
  .
    self.execute(Command.GET, {'url': url})
  .
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
  (Session info: chrome=79.0.3945.117)

…意味着 url 作为论据传递给 get() 一个参数无效。
当包含url列表的文本文件在最后一个url的分隔符之后包含一个空格字符时,我能够重现相同的回溯。可能在b.txt的fag端有一个空格字符 https://www.google.com/,https://www.bing.com/, .

调试

理想的调试方法是打印 url_rpt 这将揭示如下空间特征:
代码块:

url = open ('url_list.txt','r')
url_rpt = url.read().split(",")
print(url_rpt)

控制台输出:

['https://www.google.com/', 'https://www.bing.com/', ' ']

解决方案

如果从末尾删除空格字符,您自己的代码将执行perfecto:

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
url = open ('url_list.txt','r')
url_rpt = url.read().split(",")
print(url_rpt)
for link in url_rpt:
   driver.get(link)
driver.quit()

相关问题