【问题标题】:Empty iframe in Selenium yet filled in browser (python)Selenium 中的空 iframe 但在浏览器中填充(python)
【发布时间】:2016-01-10 21:49:53
【问题描述】:

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

问题: Selenium WebDriver 对象中的 iframe 为空。然而,在 ACTUAL 浏览器中,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)

【问题讨论】:

    标签: python selenium iframe


    【解决方案1】:

    问题出在这里:

    iframe = wrapper.find_element_by_tag_name('iframe')
    

    页面上有多个iframes,您对id为app-player的那个感兴趣:

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

    另请注意,使用time.sleep 会使您的自动化代码非常脆弱,并且通常比所需的速度要慢 - 请改用Explicit Waits 来等待页面上满足特定条件。

    【讨论】:

    • 啊谢谢!是的,我已经尝试了很多类似的东西,但无法让它发挥作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2013-04-04
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多