**
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()
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 selenium.webdriver.common.by import By -
报错 ‘WebDriver’ object has no attribute 'switch_to_context’应将语句改为driver.switch_to.default_content()格式
好了哦,如有改进欢迎交流
|