热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Selenium2Python实现网页登陆过程

Selenium是常见的UI自动化工具,利用Selenium可以实现很多常用的网页操作。Selenium2相比于Selenium1,核心的升级在于引入了Webdriver。在使用Webdr

      Selenium是常见的UI自动化工具,利用Selenium可以实现很多常用的网页操作。Selenium2相比于Selenium1,核心的升级在于引入了Webdriver。在使用Webdriver之前,Selenium主要是在浏览器中运行Javascript来实现自动化的操作,由于Javascript的安全模型等因素的限制,有一定的局限性。Webdriver不再依赖于Javascript,它通过原生浏览器支持或者浏览器扩展直接控制浏览器。它的工作原理大致如下:

      首先,Webdriver启动浏览器并绑定端口,该启动浏览器作为Webdriver的remote server。然后客户端通过The Webdriver Wire Protocol给remote server的监听端口发送请求。Remote server 收到请求后,使用原生的浏览器组件(如:IEDriverServer.exe、Chromedriver.exe等),将请求转化浏览器的本地调用。下面介绍使用Selenium2来实现登录CSDN网站的过程。

#coding=utf-8
from selenium import webdriver
driver=webdriver.Firefox()  #启动Firefox浏览器实例
driver.get("https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn")   #访问CSDN登陆页
driver.find_element_by_id("username").clear()    #清除用户名输入框中的内容
driver.find_element_by_id("username").send_keys("yourusername")     #输入用户名
driver.find_element_by_id("password").clear()    #清除密码输入框中的内容 
driver.find_element_by_id("password").send_keys("yourpassword")    #输入密码
driver.find_element_by_xpath("/html/body/div[2]/div/div/div[2]/div/div[1]/div/form/input[6]").click()    #点击登录按钮

#登录完成后,获取网页的title,通过检查title来验证是否登录成功
title=driver.title
print title
if title==u"我的CSDN":
    print u"登录成功"
    
    #获取页面中的用户名
    user=driver.find_element_by_xpath("/html/body/div[6]/div[2]/div[1]/div[1]/div[2]/div[1]/span/a").text
    print user
else:

    print u"登录失败"


这里对于以上代码做一些说明。

1. 第一行的#coding=utf-8建议加上,因为Python对于编码的处理比较容易出问题,特别是有中文的时候,应该统一指定编码格式。

2. webdriver定位网页元素的方式比较多,可以根据id, name, tag,  xpath, css等。使用id, name, tag这些方式定位元素比较简单和方便,缺陷是这些属性不一定存在,另一方面,它们也不具备唯一性。 利用xpath定位,可以深入网页的层次结构,更加准确,但是维护比较麻烦,不同的浏览器也可能存在差异。不熟悉Xpath的同学,可以利用Firebug查看组件的xpath路径。对于组件的定位,笔者的建议是,能使用id或者name等简单方式确定的元素就用这类方式确定;层次结构复杂,属性不全的元素,可以通过xpath或者css等方式确定。

3. 完成登录后,需要对是否登录成功进行检查,一般可以通过以下几种方式:

    1)  检查当前页面的title是否正确

    2)检查当前页面的url是否正确

    3)检查当前页面中的某些元素是否正确,例如,登录成功后应该显示的用户名,模块名等等。

    这里采用了检查title和用户名的方式。

    

    



推荐阅读
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 利用 Python 实现 Facebook 账号登录功能 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • CSS中的pointer-events属性详解与应用
    在CSS中,`pointer-events`属性是一个非常实用但常被忽视的功能。它主要用于控制元素是否响应鼠标事件。当一个元素覆盖在其他元素之上时,通过设置`pointer-events`属性,可以决定该元素是否能够接收鼠标点击、悬停等交互操作,从而实现更灵活的用户界面设计。例如,将`pointer-events`设置为`none`可以使元素透明地传递鼠标事件,方便实现复杂的叠加效果和交互逻辑。 ... [详细]
  • 软件自动化测试的学习路线
    软件自动化测试的学习步骤软件测试交流群关注软件测试技术公众号获取阅读目录软件自动化测试的学习步骤自动化测试的本质自动化测试学习的误区自动化测试的职位自动化测试分类Web自动化 ... [详细]
  • 尝试在数据库中查询数据并在datatables中异步显示时总是报错。有人帮我看下吗,好像是这个json的格式出问题,我看了firebug,应该是servlet返回的json数据格式问题,但因为新 ... [详细]
  • Thisquestionalreadyhasananswerhere:这个问题已经有了答案:HowcanIdisplayaJavaScriptobje ... [详细]
author-avatar
日月小明空间_785
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有