Selenium中的iframe为空,但在浏览器中已填充(python)

Selenium中的iframe为空,但在浏览器中已填充(python),python,selenium,iframe,Python,Selenium,Iframe,我试图控制Spotify的浏览器播放器。所有控件都放在iframe部分中 问题:Selenium WebDriver对象中的iFrame为空。然而,iFrame在实际浏览器中填充了正确的内容 代码示例: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.web

我试图控制Spotify的浏览器播放器。所有控件都放在iframe部分中

问题:Selenium WebDriver对象中的iFrame为空。然而,iFrame在实际浏览器中填充了正确的内容

代码示例:

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

import time

username = 'myusername'
base_url = 'https://play.spotify.com/user/spotifydiscover/playlist/76HML2OQXigkyKopqYkeng'

browser = None

def login():
    global browser
    password = input("Password: ")
    browser = webdriver.Firefox()
    browser.get(base_url)

    browser.find_element_by_id('has-account').click()

    browser.find_element_by_id('login-usr').clear()
    browser.find_element_by_id('login-usr').send_keys(username)

    browser.find_element_by_id('login-pass').clear()
    browser.find_element_by_id('login-pass').send_keys(password)
    browser.find_element_by_id('login-pass').submit()

def next_track():
    global browser
    wrapper = browser.find_element_by_id("section-collection")
    print(wrapper.get_attribute('innerHTML').encode('utf-8'))
    iframe = wrapper.find_element_by_tag_name('iframe')
    print(iframe.get_attribute('innerHTML').encode('utf-8'))
    sub = browser.switch_to_frame(iframe)
    sub.find_element_by_id('next').click()

def test():
    login()
    time.sleep(14) # Adjusted until page is 100% fully loaded
    next_track()
    time.sleep(40)
问题在于:

iframe = wrapper.find_element_by_tag_name('iframe')
页面上有多个
iFrame
,您感兴趣的是具有
app player
id:

browser.switch_to_frame("app-player")
# now use browser.find_element_* to locate elements inside iframe

还要注意的是,使用
time.sleep
会使您的自动化代码变得非常脆弱,并且通常比需要的速度要慢-而是使用它来等待页面上的特定条件得到满足。

啊,谢谢!是的,我试过很多类似的方法,但都没能成功。