• Python 3 + Selenium 3 简单入门学习示例 126邮箱登录


    这是一个很多基础演示的书上的例子,但是一般按照这些书上的代码可能都不能成功登录。也许是网易修改了126的页面导致的吧,下面给出最新的能够work的版本

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from time import sleep
    import unittest
    
    
    class Login126Main(unittest.TestCase):
        def setUp(self) -> None:
            self.url = 'https://m.126.com/'
            self.username = 'herbert.zhou'
            self.userpassword = 'XXXXXX'
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.driver.maximize_window()
    
        def test_login(self):
            driver = self.driver
            driver.get(self.url)
            sleep(5)
    
            self.assertEqual(driver.title, '126网易免费邮--你的专业电子邮局', '登录')
    
            # driver.switch_to.frame(driver.find_element_by_xpath('//iframe[starts-with(@id, "x-URS-iframe")]'))
            WebDriverWait(driver, 10).until(
                EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[starts-with(@id, "x-URS-iframe")]')))
    
            # 填写用户名
            driver.find_element_by_xpath('//input[@name="email"]').send_keys(self.username)
    
            # 填写密码
            driver.find_element_by_xpath('//input[@name="password"]').send_keys(self.userpassword)
    
            # 提交
            driver.find_element_by_xpath('//a[@id="dologin"]').click()
            sleep(10)
    
            # 验证跳转成功
            self.assertEqual(driver.title, '网易邮箱6.0版', '登录成功')
    
        def tearDown(self) -> None:
            self.driver.quit()
    
    
    if __name__ == '__main__':
        unittest.main()
    

      需要注意的几个问题:

    1. 这个页面是带有iframe的,需要switch_to进去才能填写用户名,密码,否则找不到。具体的可以自行百度iframe
    2. WebDriverWait里面有一个expectedcondition有一个专门的方法就是判断frame是否available,如果available则switch进去。这个可以提升代码的运行速度。当然是用强制等待后再switch也是没问题的,如图我里面注释掉的代码,也是可以工作的。
    3. 小示例,但是包含的基础知识点不少,包括unittest框架。
  • 相关阅读:
    ThinkPhp框架分页查询和部分框架知识
    tp框架增删改
    WAMP中mysql服务突然无法启动 解决方法
    thinkphp框架 的 链接数据库和操作数据
    php 全局使用laravel的dd和dump
    给centos装图形界面 widowsx
    marquee标签的使用
    微信公众号开发入门教程
    laravel admin引入css js报错 https
    利用Croppie裁剪图片并后台保存
  • 原文地址:https://www.cnblogs.com/herbert/p/10853042.html
Copyright © 2020-2023  润新知