51Testing软件测试论坛

标题: Python 学习日记(养成学习的习惯) [打印本页]

作者: lsekfe    时间: 2016-4-20 11:32
标题: Python 学习日记(养成学习的习惯)
Python 学习day1
前期是直接用selenium + python 来学习自动化的,学习了一下,感觉在Python这块上有些吃力,所以就先学一下python基础。
当然,今天的学习没有按照一个初学者来一步一步的去学习,而是挑着学的,学一些自己觉得有用的东西,或者是对学习有提高的地方。
学习内容则是对照着书本,通过在CMD里面和pycharm编译器里面去写一些代码,并执行。感觉python还是比较给力的,学起来很舒服,真的有点喜欢上代码了。

Python 学习day2
今天主要学习了python的一些基本语法,以及操作了一些小案例。
原以为要把python好好学习一下,然后再去学selenium要好了些,但是结果发现不是这样的,selenium+python 自动化中,python目前对于我这个级别的自动化学习者来说,不是很重要,而且前期也不需要去学习得那么深,所以python学习到此结束。
从明天开始继续学习selenium+python,加油!


自动化学习python+selenium day3
学习了几种常见的定位方式,比如说id,name,class name, link text, partical link text, xpath, css.
在这几种定位中,常见的当然好用,但是如果能用好css和xpath, 那将法力无边了!
加油,骚年!

自动化学习python+selenium day4
学习了如何定位元素组,以及对元素组中的一些元素进行操作。
学习过程中,定位元素组比较容易,但是操作的话,就需要有一些语言基础了,以及一些HTML基本,因为这些实例是基于一个简单的html来操作的。
学到这里,我突然想去先学习一下python编程了。
所以从明天开始,我将先学习6天的python编,到下周五看看python基础怎么样再决定下一步学习计划。

自动化学习python+selenium day5
学习到现在,学习到了下面这些内容,主要是一些定位方法和使用方法……加油继续学!
id_
#当前元素的ID
tag_name
#获取元素标签名的属性
text
#获取该元素的文本。
click()
#单击(点击)元素
submit()
#提交表单
clear()
#清除一个文本输入元素的文本
get_attribute(name)
#获得属性值
s_selected(self)
#元素是否被选择
is_enabled()
#元素是否被启用
find_element_by_id(id_)
#查找元素的id
find_element_by_name(name)
#查找元素的name
find_element_by_link_text(link_text)
#查找元素的链接文本
find_element_by_partial_link_text(link_text)
#查找元素的链接的部分文本
find_element_by_tag_name(name)
#查找元素的标签名
find_element_by_xpath(xpath)
#查找元素的xpath
find_elements_by_xpath(xpath)
#查找元素内的子元素的xpath
find_element_by_class_name(name)
#查找一个元素的类名
find_elements_by_class_name(name)
#查找元素的类名
find_element_by_css_selector(css_selector)
#查找并返回一个元素的CSS 选择器
find_elements_by_css_selector(css_selector)
#查找并返回多个元素的CSS 选择器列表
send_keys(*value)
#模拟输入元素

自动化学习python+selenium day6
今天学习了以下内容,加油消化!
switch_to_frame():定位到frame,如果不是嵌套的套架,而是窗口时,就可以用windows;
driver.switch_to_window():定位到窗口,driver.switch_to_window("windowName"),用法与switch_to_frame. 相同;
implicitly_wait(),它的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
调用js方法
       execute_script(script, *args)
在当前窗口/框架 同步执行javaScript
脚本:JavaScript的执行。
*参数:适用任何JavaScript脚本。
使用:
driver.execute_script(‘document.title’)
不过目前对于js来说,还是比较陌生

自动化学习python+selenium day7
今天学习内容如下,感觉还不错……加油!
–  上传文件
文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,关键是思路。
上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。
其实,在selenium  webdriver 没我们想的那么复杂;只要定位上传按钮,通send_keys添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。下面通地例子演示
#脚本要与upload_file.html同一目录
file_path =  'file:///' + os.path.abspath('upload_file.html')
driver.get(file_path)
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')
–  处理下拉框
这里可能和之前的操作有所不同,首先要定位到下拉框的元素,然后选择下拉列表中的选项进行点击操作。
m=driver.find_element_by_id("ShippingMethod")
m.find_element_by_xpath("//option[@value='10.69']").click()
当我们在保存设置时会弹出一个确定按钮;我们并没按照常规的方法去定位弹窗上的“确定”按钮,而是使用:
–  driver.switch_to_alert()
完成了操作,这是因为弹窗比较是一个具有唯一性的警告信息,所以可以用这种简便的方法处理。
–  switch_to_alert()  
焦点集中到页面上的一个警告(提示)
– accept()
接受警告提示

自动化学习python+selenium day8
今天学习了以下内容……加油!
调用键盘按键操作需要引入keys包:
from selenium.webdriver.common.keys import Keys
通过send_keys()调用按键:
send_keys(Keys.TAB)        # TAB
send_keys(Keys.ENTER)    # 回车
注意:这个操作和页面元素的遍历顺序有关,假如当前定位在账号输入框,按键盘的tab键后遍历的不是密码框,那就不法输入密码。 假如输入密码后,还有需要填写验证码,那么回车也起不到登陆的效果。
输入中文问题
顺便解决了一个困扰我到现的一个输入中文件的问题。selenium2 python在send_keys()中输入中文一直报错,其实前面加个小u 就解决了:
send_keys(u"输入中文")
同时,还学习了获取cookie, 以及对cookie进行增删改查的操作。

自动化学习python+selenium day9
今天学习了webdriver的一些基本原理,以及3种操作类……
webdriver原理:

1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver的remote server。

2. Client 端通过CommandExcuter 发送HTTPRequest 给remote server 的侦听端口(通信协议: the webriver wire protocol)

3. Remote server 需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用。

request 请求 / response 应答

一次请求会对应一次应答

POST/GET  是请求(request)两种类型;关于两种请求方式的类别参考其它资料

200 、203 是 HTTP请求返回的状态码,200表示成功;

sessionid :每一个访问服务器的客户端,都要先得到服务器端分配的一个sessionid ,就像通行证一样,只有得到sessionid的客户端才能向服务器请求想要的数据。

  其它还包括操作系统版本,浏览器类型、URL、字符类型等非常详细的记录。熟悉HTTP ,了解TCP 的三次握手四次挥手,相信你对浏览器的交互与webdriver原理会有更深入的认识。


ActionChains 类(鼠标事件)

  context_click()  右击
  double_click()   双击
  drag_and_drop()  拖动


测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除、移动、重命名),之前学习元素的点击非常简单:

driver.find_element_by_id(“xxx”).click()

那么鼠标的双击、右击、拖动等是否也是这样的写法呢?例如右击:

driver.find_element_by_id(“xxx”).context_click()

经过运行脚本得到了下面的错误提示:

AttributeError: 'WebElement' object has no attribute 'context_click'

提示右点方法不属于webelement 对象,通过查找文档,发现属于ActionChains 类

鼠标双击的写法:

#定位到要双击的元素
qqq =driver.find_element_by_xpath("xxx")
#对定位到的元素执行鼠标双击操作
ActionChains(driver).double_click(qqq).perform()

鼠标拖放操作的写法:

#定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移动到的目标位置
target =  driver.find_element_by_name("target")

#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()


转自:magic18的个人空间


作者: Miss_love    时间: 2016-4-20 11:48
感谢分享。。
作者: seagull1985    时间: 2016-4-20 13:38
顶一个。。。。。。。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2