web 自动化

后台服务器(java)——api接口(桥梁,适配)——requests

web自动化原理:

浏览器   ——selenium(webdriver)——python代码 selenium

webdriver提供的接口api模式  

selenium 怎么和webdriver交互?通过http请求。通过python代码向webdriver发送http请求。

不同的driver相当于和浏览器之间的翻译。  

面试题:selenium采用的是什么协议?http协议

进行web自动化测试的原因:

1.显示的数据不一定是后端返回的数据

2.兼容性

3.UI交互


标记性语言:

HTML:超文本标记语言,Hyper Text Markup language 方便查找,快速定位

采用键值对的形式:<key>value</key> key是指定的标签,规范,标准

XML <key>value</key> key是自定义的标签

markdown

标记性语言只是负责结构化的展示,不负责美化和动态。css和js怎么可以放在html里面的,html发展支持了这样的扩展进行导入。就像python里可以加载c一样

HTML:radio 单选  checkbox默认选中  readonly只对输入框生效只读 默认为true。  disabled不能使用 

readonly和disabled的区别:readonly只针对input(text/password)和textarea有效。而disabled对于所有的表单元素都有效,包括select,redio,checkbox,button等。表单在使用了disabled后,要将表单以post或get方式提交的话,这个元素的值不会被传递出去。而readonly会将会将值传递出去。

JavaScript:

<Script>
    var a=1;
    function run(){

        IF (a>8){
            
            console.log("我最棒")
            return a+8;
}
        else if (a<4){
            return a;

}
}
    run();
</Script>

DOM: Document Object Mode 文档对象模型。 把文本映射成一个dom对象。就是把HTML中的各种元素映射成js可以访问的对象。1.查找元素2.修改元素3.操作浏览器

ID  name classname tagname querySelector

文档中的所有元素都可以看做节点。documen代表整个文档。documen.getElementById("")  document.querySelector, document.querySelectorAll 

element.textContent. 

DOM修改:

innerHTML:可以修改所有

innerText:可以修改整个元素的id等属性

value:element.value("kkjjhd")

setAttribute:element.setAttribute('id','hello')

getAttribute("maxlength") 可以获取可以修改

改变样式style,color

改变 disabled,readonly

事件监听:

onchange html元素改变

onclik  用户点击html元素

onmouseover 用户从一个html元素上移动鼠标

onmouseout 用户从一个html元素上移开鼠标

onkeydown 用户按下键盘按键

onload 浏览器已完成页面的加载

1.前进  driver.forward()

2.刷新:driver.refresh()

3.设置窗口大小:driver.set_window_size(400,300)

4.最大化:driver.maximize_window()

5.最小化:driver.minimize_window()

6.后退:driver.back()

7.获取截图:driver.save_screenshot(‘demo.png’)

8.关闭 :driver.close()

9.退出:driver.quit()

查看源码;ctrl+B 查看详细源码 ctrl+shift+i 

self.service = Service(
    executable_path,
    port=port,
    service_args=service_args,
    log_path=service_log_path)
self.service.start()

start方法:

try:
    cmd = [self.path]
    cmd.extend(self.command_line_args())
    self.process = subprocess.Popen(cmd, env=self.env,
                                    close_fds=platform.system() != 'Windows',
                                    stdout=self.log_file,
                                    stderr=self.log_file,
                                    stdin=PIPE)
except TypeError:
    raise

 

webdriver原理:

1.初始化一个service并且启动这个service

start()方法:主题逻辑,通过命令行的——subprocess.Popen形式打开chromedriver.exe文件 ,也就是放在python根目录下的驱动

2.初始化一个ChromeRemoteConnection连接器,通过execute方法urllib3库进行网络请求。请求上面的service服务器。来访问了service_url也就是service中的一个属性。定义了一些谷歌特有的接口地址。接口地址全部封装在chromedriver.exe中。只有执行self.execute方法才是调用请求。

commands中有很多URL地址,封装各种各样的方法,get访问服务器,find-element找元素。所有方法做的事情都是execute访问了subprocess也就是url地址。

command_executor=ChromeRemoteConnection(
    remote_server_addr=self.service.service_url,
    keep_alive=keep_alive),
desired_capabilities=desired_capabilities)
class ChromeRemoteConnection(RemoteConnection):

  def __init__(self, remote_server_addr, keep_alive=True):
        RemoteConnection.__init__(self, remote_server_addr, keep_alive)
        self._commands["launchApp"] = ('POST', '/session/$sessionId/chromium/launch_app')
        self._commands["setNetworkConditions"] = ('POST', '/session/$sessionId/chromium/network_conditions')
        self._commands["getNetworkConditions"] = ('GET', '/session/$sessionId/chromium/network_conditions')
        self._commands['executeCdpCommand'] = ('POST', '/session/$sessionId/goog/cdp/execute')
通过python标准库 urllib3来访问服务器的地址。requests通过 urllib3来实现的。只是封装了requests

execute方法:执行请求的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值