selenium和firefox浏览器,登录icloud,无法切换到登录框的iframe

发布于 2022-09-05 23:12:40 字数 483 浏览 17 评论 0


其登录框iframe的id为 auth-frame

brower.switch_to.frame(0)
# brower.switch_to.frame('auth-frame')
# 都无法切换到这个iframe,无法获取到iframe内部的div。

另外,用selenium和firefox浏览器登录icloud时,复制下已经登录的cookie,如何进行格式化处理,使cookie可以被添加到以后的每一次请求。

            brower = webdriver.Firefox()
            cookie = self.cookie
            brower.add_cookie(cookie) #但是复制下来的cookie格式是不被支持的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱给你人给你 2022-09-12 23:12:40

我这里测试是可以切换的

Windows 7 (64 bit)
Python 3.6.2
selenium (3.5.0)
Firefox 55.0.3 (32 位)
geckodriver-v0.19.0-win64

测试代码:

#!/bin/env python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Firefox()
driver.get("https://www.icloud.com/")
title = driver.title
print(title)

time.sleep(20)
print("time sleep ok")

driver.switch_to.frame(driver.find_element_by_id("auth-frame"))

time.sleep(3)


# 填写邮箱与密码登陆
emailElement = driver.find_element(By.ID, 'appleId')
emailElement.send_keys("123@qq.com")

time.sleep(1)

passwordEmement = driver.find_element(By.ID, 'pwd')
passwordEmement.send_keys("password")

你可能需要等待一段时间,等待 Frame 代码加载完成,如果不想用time这种粗暴的方式可以使用wait.untilEC.presence_of_element_located组合

另一个cookie的问题,cookies是许多键值对的的,你这样试试

# 登陆后获取cookies
cookies = driver.get_cookies()

# 在加载新的页面后倒入Cookies
for cookie in cookies:
    driver.add_cookie(cookie)

另外也可以保存到文件中

# 保存Cookies到文件
import pickle
import selenium.webdriver 

driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))


# 从文件加载Cookies
import pickle
import selenium.webdriver 

driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)

保存在文件这种适合cookie校验不严格的网站

奈何桥上唱咆哮 2022-09-12 23:12:40

郁闷的结论,我们学校寝室网络,不给他设置个够长的等待,是不会加载完成的!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文