TA的每日心情 | 无聊 昨天 09:05 |
---|
签到天数: 1050 天 连续签到: 1 天 [LV.10]测试总司令
|
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的个人空间
|
|