selenium当前窗口,python中selenium使用

  selenium当前窗口,python中selenium使用

  摘要

  从Selenium模块化这篇文章可以看出参数化的必要性。本文介绍了读取外部txt文件的方法。

  如何打开文件

  以下两个函数可用于打开文件:

  1、打开(文件名,访问模式)

  File_name:文件路径和名称;

  Access_mode:访问模式,具体参数如下。如果没有提供参数,默认值为R:

  r:表示已读;

  w:表示书写;

  答:表示添加;

  :表示读写;

  b:表示二进制访问;

  2.文件功能

  file()的内置函数等于open(),根据文档如下:

  帮助(打开)

  打开(.)

  open(名称[,模式[,缓冲]]) -file对象

  使用file()类型打开一个文件,返回一个file对象。这是

  打开文件的首选方式。参见文件。__doc__了解更多信息。(完)

  阅读英文文本

  接下来介绍读取txt文件内容的方法。Python提供了几种读取文件的方法,如下所示;

  Read()读取整个文件

  Readlines()逐行读取整个文件。

  Readeline()逐行读取。

  假设现在读取的txt文件存储了用户登录名和密码的测试数据,内容如下:

  管理员,管理员

  客人,客人

  测试,测试

  在这种情况下,更适合通过逐行读取来获取文件,如下例所示:

  #编码:utf-8

  importcodecsdefstr_reader_txt(地址):

  fp=打开(地址,“r”)

  用户=[]

  残疾人=[]

  lines=fp.readlines()用于数据内联:

  name,pwd=data.split(,)

  name=name.strip(\t\r\n )

  pwd=pwd.strip(\t\r\n )

  users.append(名称)

  pwds . append(pwd)print user:% s(len(% d)) %(name,len(name))print pwd:% s(len(% d)) %(pwd,len(pwd))returnusers,PWDs

  fp.close()

  上面提到的Readlines()逐行读取txt文件的内容,使用split()函数切割字符串,分别获得用户名和密码。需要注意的是,读出的字符有最后一个回车,所以需要strip函数来过滤。

  阅读中文文本

  但在实际测试过程中,可能需要输入中文用户和密码。测试能通过吗?修改后的测试文档txt的用户名为中文,内容如下:

  管理员,管理

  客人,客人

  测试人员,测试

  执行上述脚本后,结果如下:

  可以看到,上面的脚本在处理汉字时遇到了异常,汉字显示乱码。这里有两种解决方案:

  方法一

  #编码:utf-8

  importcodecsdefstr_reader_txt(地址):

  fp=打开(地址,“r”)

  用户=[]

  残疾人=[]

  lines=FP . readlines()for data inlines:print type(data)

  Data=data.decode(gb18030)#处理中文编码问题

  打印类型(数据)

  name,pwd=data.split(,)

  name=name.strip(\t\r\n )

  pwd=pwd.strip(\t\r\n )

  users.append(名称)

  pwds . append(pwd)print user:% s(len(% d)) %(name,len(name))print pwd:% s(len(% d)) %(pwd,len(pwd))returnusers,PWDs

  fp.close()

  方法是先解码代码( gb18030 )再划分内容,然后正常显示。结果如下。

  原因描述

  python里一般都是指Unicode,比如哈哈的unicode对象就是u\u54c8\u54c8

  另一方面,Str是一个字节数组。这个字节数组表示unicode对象编码后的存储格式(utf-8、gbk、cp936、GB2312)。在这里只是一个字节流,没有别的意思。如果想让这个字节流中显示的内容有意义,就必须使用正确的编码格式进行解码和显示。

  在上面的脚本操作中,type(data)用于打印解码前后数据的数据格式,如下所示:

  可以看出,当内置的open()方法打开一个文件时,read()读取str格式:

  Read()读取时,如果参数是str(且内容包含中文),读取后需要使用正确的编码格式解码(),转换成unicode字符后才能正确显示。

  在写write()时,如果参数是unicode,就需要用要写的代码来编码()。如果是其他编码格式的str,就需要先用这个str的代码来编码(),转换成unicode后再用写好的代码来编码()。

  方法2(推荐)

  文件打开后可以直接读取gb18030格式,然后就可以直接操作了。另外,这种方法对中英文txt都适用。

  #编码:utf-8

  importcodecsdefstr_reader_txt(地址):

  fp=codecs.open(地址, r , gb18030)#fp=open(地址, r )

  用户=[]

  残疾人=[]

  lines=fp.readlines()用于数据内联:

  name,pwd=data.split(,)

  name=name.strip(\t\r\n )

  pwd=pwd.strip(\t\r\n )

  users.append(名称)

  pwds . append(pwd)print user:% s(len(% d)) %(name,len(name))print pwd:% s(len(% d)) %(pwd,len(pwd))returnusers,PWDs

  fp.close()

  备注:Codecs.getreader也可以达到同样的效果,如下:

  #编码:utf-8

  importcodecsdefstr _ reader _ txt _ CSV(地址):

  f=文件(地址,“rb”)

  用户=[]

  残疾人=[]

  CSV=codecs . getreader( GB 18030 )(f)# codecs . getreaderf方法

  对于数据增量:

  name,pwd=data.split(,)

  name=name.strip(\t\r\n )

  pwd=pwd.strip(\t\r\n )

  users.append(名称)

  pwds.append(pwd)returnusers,pwds

  f.close()

  原因描述

  编解码器模块提供了一个open()方法,它可以指定一个代码来打开一个文件。用这种方法打开的文件将返回unicode。

  写的时候,如果参数是unicode,就用open()中指定的代码进行编码,然后再写;

  如果是str,先按照源代码文件中声明的字符编码解码成unicode,然后再做上面的操作。对于内置的open(),这种方法不容易出现编码问题,推荐使用。

  为什么要使用gb18030的编码格式?

  以下是对比试验的结果,显示了使用gb18030和UTF-8的操作结果:

  在windows平台下,默认的文档保存方式是ANSI,在简体中文系统下,ANSI码代表GB2312码。

  保存txt时,将保存格式修改为UTF-8时,可以使用UTF-8编码打开,但字符长度不同。原因如下:

  需要提到的是BOM(字节顺序标记)。当我们保存一个文件时,文件中使用的代码并没有被保存,但是当我们打开它时,我们需要记住原来保存时使用的代码,并用这个代码打开它,这就造成了很多麻烦。

  所以记事本没有让你在打开文件的时候选择代码?你不妨在使用文件之前打开记事本——打开一个以UTF-8编码格式保存的txt文档。

  UTF引入了BOM来表示自己的代码。如果读入的前几个字节是其中之一,那么用来表示接下来要读取的文本的代码就是相应的代码:

   BOM_UTF8 \xef\xbb\xbf

   BOM_UTF16_LE \xff\xfe

  BOM_UTF16_BE \xfe\xff

  当有BOM时,你如何获得UTF-8文件的内容?有一种方法是编解码器。可以参考的Codec中的BOM_UTF8,这里就不详细解释了。

  GB2312、GBK和GB18030的区别与联系

  这里有一个参考链接,http://www.zhihu.com/question/19677619.

  这篇文章的描述比较全面清晰,可以概括为:

  GBK完全兼容GB2312。

  GB 18030完全兼容GB 2312,基本兼容GBK,支持GB 13000和Unicode的全部统一汉字,共70244个汉字。

  GB 18030,全称:国家标准GB 18030-2005 《信息技术中文编码字符集》,是中华人民共和国(PRC)最新的内码字集,是GB 18030-2000 《信息技术信息交换用汉字编码字符集基本集的扩充》的修订版。

  中文处理流程概述

  处理中文数据时,最好采用以下方法:

  1.尽早解码(尽快解码,并在进一步处理之前将文件内容转换为unicode)

  2.unicode无处不在(Unicode用于程序的内部处理)

  3.稍后编码(最终编码回所需的编码,比如将最终结果写入结果文件)

  有几点需要说明:

  *所谓"正确的"编码意味着指定的编码和字符串本身的编码必须一致。其实这个不是那么好判断的。一般来说,我们直接输入的简体中文字符有两种可能的编码:GB2312(GBK,GB18030)和UTF-8。

  * GB2312、GBK和GB18030实质上是相同的编码标准。只是在前者的基础上扩大了字符数。

  * UTF-8和GB编码不兼容

  *第二步,在将str转换为unicode对象时,可以使用以下两种方法:这两种方法都是将gb2312中编码的str转换为unicode编码。

  unicode(字符串,“gb2312”)

  字符串解码( gb2312 )

  *另外,在定义字符串时,用str=u 汉字来定义汉字。

  参考数据

  深入分析中文Python乱码

  详细讲解python中文编码和处理

  http://blog.csdn.net/lxdcyh/article/details/4018054

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: