Selenium WebDrive使用Edge浏览器模拟登录163邮箱

Selenium WebDrive使用Edge浏览器模拟登录163邮箱,第1张

**

Selenium WebDrive使用Edge浏览器模拟登录163邮箱(详细过程及代码)

**
1.首先要在pycharm中下载好Selenium
2.然后下载浏览器驱动这里是链接
(https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
*注意版本要一致
*注意放置的位置要在python3.7(这里是我用的)的更目录下也就是找到python文件夹打开后放进去有些资料说要改名这里不用因为Selenium版本更新了改的话反而出错
*路径配置问题的话如果之前为python配置好了path的话就不用再重复了

3.就要现代码了

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Edge()
driver.get('http://mail.163.com')
time.sleep(10)
# 登录
iframe = driver.find_elements(By.TAG_NAME,"iframe")[0]
driver.switch_to.frame(iframe)
driver.find_element(By.NAME,"email").clear()
driver.find_element(By.NAME,"email").send_keys('zuoruixiang2020')
driver.find_element(By.NAME,"password").clear()
driver.find_element(By.NAME,"password").send_keys("201703zrx")
driver.find_element(By.ID,"dologin").click()
time.sleep(2)
driver.switch_to.default_content()  # 跳出 frame,回到主页面
print(driver.title)  # 获取标题
time.sleep(3)

*这里的代码坑已经避了哦
4.下面还是要把我避坑的过程和大家讲一讲咯

  1. 我使用的是电脑自带的Edge浏览器故下载驱动时应该在官网寻找版本匹配的驱动器,驱动器一定要放在相应的python更目录下,用driver = webdriver.Edge()加载驱动

  2. 出现报错NoSuchFrameException: Message: no such frame: element is not a frame时是因为136邮箱iframe标签的id会变动所以不可以用id属性直接定位应该用直接定位iframe标签的方式:
    iframe = driver.find_elements(By.TAG_NAME,“iframe”)[0]
    driver.switch_to.frame(iframe)
    同时element元素少了s,这会使定位出现问题报错 TypeError: ‘WebElement‘ object is not subscriptable,需要把find_element改成find_elements进行定位,才能解决问题

  3. 报错:UserWarning: find_elements_by_class_name is deprecated. Please use find_elements(by=By.CLASS.时是因为python版本更新之后之前的方法已经废弃应该用driver.find_element(By.NAME,“email”).这样的方式代替同时还要引入from selenium.webdriver.common.by import By

  4. 报错 ‘WebDriver’ object has no attribute 'switch_to_context’应将语句改为driver.switch_to.default_content()格式

好了哦,如有改进欢迎交流

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/794039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存