【Selenium4】教程1:自动登录163邮箱

在进行操作之前,首先要确保自己环境已经配置好。

如果你能运行以下两行代码,跳出163界面,恭喜你,可以学习登录了!

from selenium import webdriver

driver = webdriver.Edge()
driver.get('https://mail.163.com/')

其实,登录163邮箱我们可以拆解为以下几个动作:

1.告诉程序我们要登录哪个网站。

2.在网站上找到我们要的元素

3.告诉这个元素应该做什么(eg:文本框就输入,按钮就click)

我们先来看以下代码的框架,接下来分3个步骤解决

from selenium import webdriver
from selenium.webdriver.common.by import By

# 第一步:告诉网址
driver.get('https://mail.163.com/')
# 第二步第三步 找到元素 告知动作
driver.find_element(By.NAME, 'email').send_keys('yonghuming')

STEP1:指定网址

最简单的一步,即driver.get('http://xxxxxxx')

STEP2:找到元素 指明操作

在selenium4当中,我们用find_element的方法,详细见:Selenium4.9.1-元素定位方法大全_selenium定位多个元素_Ciel_321的博客-CSDN博客​​​​​​​w

也就是说,我们只要知道元素的id/name/class就能定位元素了,我们F12或者Fn+F12进入检查,Ctrl+Shift+C选中元素进入检查,就可以知道用户名哪一行元素的代码了。

如果driver.find_element(By.NAME,'email'),会发现报错,报错的原因是“登录”在iframe框架里面,我们要先定位到iframe,才能find_element。

问题1:如何辨别iframe?有iframe怎么办?

方法1:顺着找元素的代码,肯定能找到

注意,这里虽然告诉你id,但是不可以driver.find_element(By.ID,'email'),因为这个ID是动态变化的。

方法2:利用SelectorGadget插件,浏览器搜索就能下载,使用很简单,不赘述

你发现,说好的email不能单独选中,只能选个大框,而且下面显示了是iframe,所以我们对代码稍加修饰,马上就能进入框架啦

iframe_element=driver.find_element(By.TAG_NAME, 'iframe')
driver.switch_to.frame(iframe_element)

问题2:网页还没加载好,元素还没出现,怎么可能能find到呢?

只要给网页一点反应时间就可以了,比较简单,我把完整代码放在下面:

from time import sleep
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

driver = webdriver.Edge()
driver.get('https://mail.163.com/')
# 给网页点反应时间 加载一会让元素出现
iframe_element = WebDriverWait(driver, 25).until(
    EC.presence_of_element_located((By.TAG_NAME, 'iframe'))
)

# 切换到 iframe
driver.switch_to.frame(iframe_element)

driver.find_element(By.NAME, 'email').send_keys('yonghuming')
sleep(5)
driver.find_element(By.NAME, 'password').send_keys('mima')
sleep(5)
driver.find_element(By.ID,'dologin').click()
print('yesyesyes')
driver.close()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值