**
Selenium WebDrive使用Edge浏览器模拟登录163邮箱(详细过程及代码)
**
1.首先要在pycharm中下载好Selenium
2.然后下载浏览器驱动这里是链接
(/en-us/microsoft-edge/tools/webdriver/)
*注意版本要一致
*注意放置的位置要在python3.7(这里是我用的)的更目录下也就是找到python文件夹打开后放进去有些资料说要改名这里不用因为Selenium版本更新了改的话反而出错
*路径配置问题的话如果之前为python配置好了path的话就不用再重复了
3.就要现代码了
from selenium import webdriverimport timefrom mon.by import Bydriver = webdriver.Edge()driver.get('')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('zuoruixiang')driver.find_element(By.NAME,"password").clear()driver.find_element(By.NAME,"password").send_keys("03zrx")driver.find_element(By.ID,"dologin").click()time.sleep(2)driver.switch_to.default_content() # 跳出 frame,回到主页面print(driver.title) # 获取标题time.sleep(3)
*这里的代码坑已经避了哦
4.下面还是要把我避坑的过程和大家讲一讲咯
我使用的是电脑自带的Edge浏览器故下载驱动时应该在官网寻找版本匹配的驱动器,驱动器一定要放在相应的python更目录下,用driver = webdriver.Edge()加载驱动
出现报错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进行定位,才能解决问题
报错:UserWarning: find_elements_by_class_name is deprecated. Please use find_elements(by=By.CLASS.时是因为python版本更新之后之前的方法已经废弃应该用driver.find_element(By.NAME,“email”).这样的方式代替同时还要引入from mon.by import By
报错 ‘WebDriver’ object has no attribute 'switch_to_context’应将语句改为driver.switch_to.default_content()格式
好了哦,如有改进欢迎交流