首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python driver.get()在for循环中不工作

Python driver.get()在for循环中不工作
EN

Stack Overflow用户
提问于 2018-10-28 13:29:46
回答 2查看 2.8K关注 0票数 1

下面的代码登录到一个YouTube帐户,一旦登录,它应该访问几个YouTube视频。

问题是:

  • 如果我像这里做一个简单的直接链接,它就能工作。 driver.get('https://www.youtube.com/watch?v=FFDDN1C1MEQ')
  • 如果我执行一个循环访问多个链接,则会得到一个错误: raise exception_class(message, screen, stacktrace) InvalidArgumentException: invalid type: sequence, expected a string at line 1 column 8

完整的代码如下

代码语言:javascript
复制
import time
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException


def youtube_login():
    
    email = 'email@email.com'
    password = 'emailPassword'
    
        # Browser
    driver = webdriver.Firefox()
    driver.get('https://accounts.google.com/ServiceLogin?hl=en&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Fhl%3Den%26feature%3Dsign_in_button%26app%3Ddesktop%26action_handle_signin%3Dtrue%26next%3D%252F&uilel=3&passive=true&service=youtube#identifier')
    
        # log in
    driver.find_element_by_id('identifierId').send_keys(email)
    driver.find_element_by_class_name('CwaK9').click()
    WebDriverWait(driver, 500).until(EC.element_to_be_clickable((By.NAME, "password")))
    driver.find_element_by_name('password').send_keys(password)
    driver.find_element_by_class_name('CwaK9').click()
    WebDriverWait(driver, 500).until(EC.element_to_be_clickable((By.ID, "identity-prompt-confirm-button")))
    driver.find_element_by_id('identity-prompt-confirm-button').click()
    
    #driver.get('https://www.youtube.com/watch?v=FFDDN1C1MEQ')  # If I do a simple direct link like here, it works
    
    urls = []
        
    # You can add in a file and import from there
    
    inp = open ("urls.txt","r")
    for line in inp.readlines():
        urls.append(line.split())
    
    for url in urls:        
        driver.get(url)
    
youtube_login()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-28 13:38:45

我认为你在urls.txt中有错误的网址格式

尝试像这样调试URL:

代码语言:javascript
复制
from selenium.common.exceptions import InvalidArgumentException

for url in urls:
    try:        
       driver.get(url)
    except InvalidArgumentException:
       print(url)
票数 1
EN

Stack Overflow用户

发布于 2022-11-16 14:35:47

我用导入时间time.sleep(0.5)在driver.get()之前解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53032043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档