• selenium03-三个简单的web自动化实例


    1.百度登录

    哈,学selenium,第一个想法就是拿百度登录试试,是的没错,就是它了!

     

    from selenium import webdriver  #导入webdriver

    import time  #导入时间模块

    b = webdriver.Firefox()  #打开火狐浏览器

    b.maximize_window()  #窗口最大化

    b.get('http://www.baidu.com')  #打开百度首页

     

    time.sleep(2)  #强制等待两秒,等网页完全打开

    b.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[7]').click()  #打开登录框

    time.sleep(2)  #强制等待两秒,等登录框弹出

    b.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()  #切换到账号密码登录

    b.find_element_by_name('userName').send_keys('12345678')  #输入账号

    b.find_element_by_name('password').send_keys('12345678')  #输入密码

    b.find_element_by_name('memberPass').click()  #取消密码保存

    b.find_element_by_id('TANGRAM__PSP_10__submit').click()  #登录

     

    结果:点击登录后弹出手机号验证,所以登录未完成,不过过程代码应该是没错

     

    2.淘宝

    在百度受挫之后,第二个想到的就是淘宝。

     

    from selenium import webdriver  #导入webdriver

    import time  #导入时间

    from selenium.webdriver.common.keys import Keys  #导入Keys

    b = webdriver.Firefox()  #打开火狐浏览器

    b.maximize_window()  #窗口最大化

    b.get('https://www.taobao.com/')  #打开淘宝网

    time.sleep(2)  #强制等待2秒,等网页打开

    b.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()  #点击跳转登录页面

    time.sleep(2)  #强制等待2秒,进入登录页面

    b.find_element_by_id('J_Quick2Static').click()  #选择账号密码登录模式

    time.sleep(2)  #强制等待2秒,等登录窗口打开

    b.switch_to.active_element.send_keys('12345678')  #输入账号

    b.find_element_by_name('TPL_password').send_keys('12345678')  #输入密码

    b.find_element_by_id('J_Quick2Static').click()  #点击登录

    结果:又失败了,会出现一个滑块验证,我手工把滑块完成,显示“哎呀,出错了,点击刷新再来一次(error:N18f4f)”,刷新后再次操作滑块,依然报错。

    后来百度得知,是淘宝网站监测到使用了自动化工具,所以这个滑块是无法完成的……

    另外补充一点,账号输入框元素定位成功,但是无法输入,显示‘element is not reachable by keyboard’,有人说是firefox浏览器问题,于是使用另外的方式去输入了。

    browser.switch_to.active_element.send_keys('****')

    按照字面意思理解,应该是获取当前活动状态的元素,直接操作吧。

    总而言之,虽然失败了,但是真不是我的问题,自动化工具的监测,还不是我这样一个小萌新能解决的,希望以后能搞定吧。

    3.QQ邮箱

    三大流氓 BAT 啊,BA 都试过了,轮到 T 了。

    from selenium import webdriver  #导入webdriver

    import time  #导入时间模块

    b = webdriver.Firefox()  #打开火狐浏览器

    b.maximize_window()  #窗口最大化

    b.get('https://mail.qq.com/')  #进入qq邮箱首页

    time.sleep(2)  #强制等待两秒

    b.switch_to.frame('login_frame')  #转入登录模块所在的 frame

    b.find_element_by_id('switcher_plogin').click()  #点击进入账号密码登录模式

    time.sleep(2)  #强制等待两秒

    b.find_element_by_id('u').send_keys('12345678@qq.com')  #输入账号

    b.find_element_by_id('p').send_keys('12345678')  #输入密码

    b.find_element_by_id('p_low_login_enable').click()  #点击选择记住密码:练习时最好别选,不然很容易触发验证

    b.find_element_by_id('login_button').click()  #登录

    结果:登录成功了。

    总结:登录验证确实很头疼,不过初入门的也不需要对自己要求这么高,一般中小型公司自己的网站应该都没有反自动化工具的功能吧,基本上提供个账号+密码就可以登录了。

  • 相关阅读:
    IOS中UIImage用代码压缩
    自定义UILabel设置垂直方向的居上,居中,居下
    IOS开发之数据加密与解密:AES256+Base64转码
    IOS开发之网络数据Json处理
    Unity3d中CharacterController的移动和碰撞分析
    关于Unity3d中物体之间碰撞检测的方法
    WPF 调用Win32控件
    C# 扩展方法
    颜色空间转换 RGB到HSV
    加速计算技术-- Intel 的IPP库
  • 原文地址:https://www.cnblogs.com/maigeyouziba/p/11186683.html
Copyright © 2020-2023  润新知