webdriver对浏览器的一些常用操作

js 控制

webdriver可以用来执行javascript代码,相应的方法:execute_script

#coding=utf-8
import sys
from selenium import webdriver
import time
surl = 'http://www.baidu.com'
kw = sys.argv[1]
print kw

def search(keyword):
    driver = webdriver.Firefox()
    driver.get(surl)
    driver.find_element_by_id('kw').send_keys(keyword)
    driver.find_element_by_id('su').click()
    return driver

def testjs():
    driver = search(kw)
    js1 = 'document.documentElement.scrollTop=10000'
    js2 = 'document.documentElement.scrollTop=0'
    driver.execute_script(js1)
    time.sleep(3)
    driver.execute_script(js2)
        driver.quit()
if __name__ == "__main__":
    testjs()

将代码保存为baiduscroll.py,在命令行中执行
python baiduscroll.py selenium查看执行结果

窗口截屏

相应方法get_screenshot_as_file()
同样的,我们直接在上一个文件中进行修改,将谁的重命名为sshot.py

#coding=utf-8
import sys
from selenium import webdriver
import time
surl = 'http://www.baidu.com'
kw = sys.argv[1]
print kw

def search(keyword):
    driver = webdriver.Firefox()
    driver.get(surl)
    driver.find_element_by_id('kw').send_keys(keyword)
    driver.find_element_by_id('su').click()
    driver.get_screenshot_as_file('./shottest.jpg')
    return driver

def testjs():
    driver = search(kw)
    js1 = 'document.documentElement.scrollTop=10000'
    js2 = 'document.documentElement.scrollTop=0'
    driver.execute_script(js1)
    time.sleep(3)
    driver.execute_script(js2)
        driver.quit()

if __name__ == "__main__":
    testjs()

执行后可以看到当前文件夹下多了一个shottest.jpg

《webdriver对浏览器的一些常用操作》 shottest.jpg

关闭窗口

相应方法quit(),这个我们在上面的脚本中已经应用过了

关于屏幕操作

set_window_size() 设置屏幕大小
maximize_window()全屏
back()后退
forward()前进

webdriver的设计原理

  • WebDriver 是按照 server – client 的经典设计模式设计的。
    server 端就是 remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是 remoteserver,它的职责就是等待 client 发送请求并做出相应。client 端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的 url 等操作是以 http 请求的方式发送给被 测试浏览器,也就是 remote server;remote server 接受请求,并执行相应操作,并在 response 中返回执行状态、返回值等信息。

webdriver工作流程

  1. webdriver启动目标浏览器,并绑定到指定端口,该启动的浏览器实例,做为webdriver的remoteserver。
  2. client端通过commandExcuter发送HTTPRequest经remoteserver的侦听端口(协议:the webdriver wire protocol)
  3. Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转化转化浏览器的 native 调用。
    原文作者:hopevow
    原文地址: https://www.jianshu.com/p/dc810bfa6144
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞