qt4c.webview.iewebview

IE WebView实现

Package Contents

Classes

IEDriver window[‘qt4w_driver_lib’]
WebViewBase PC端WebView基类
Mouse 鼠标操作静态类
MouseFlag 鼠标按键枚举类
MouseClickType 鼠标点击枚举类
IEWebView IE WebView实现
class qt4c.webview.iewebview.IEDriver(ie_server_hwnd)

Bases: object

window[‘qt4w_driver_lib’]

_init_com_obj(self)

初始化com对象

_retry_for_access_denied(self, func)

IE中经常出现可重试解决的80070005错误

_check_valid(self)

检查com对象的有效性

_get_document(self, frame)

获取frame的IHTMLDocument2指针,此方法可以跨域

get_frames(self, doc)
get_frame_window(self, win, frame_id, url)

获取doc中id或name为frame_id,或者url匹配的frame的IHTMLWindow对象

handle_error_page(self, doc)

处理错误页面

eval_script(self, frame_win, script, use_eval=True)

IE10以上异常对象才有stack属性

class qt4c.webview.iewebview.WebViewBase(window, webdriver, offscreen_win=None)

Bases: qt4w.webview.webview.IWebView

PC端WebView基类

browser_type
rect

当前可见窗口的坐标信息

__getattr__(self, attr)

转发给WebDriver实现

_handle_result(self, result, frame_xpaths)

处理执行JavaScript的结果

参数:
  • result (string) – 要处理的数据
  • frame_xpaths (list) – 执行js所在frame的xpath
_handle_offset(self, x_offset, y_offset)

win10上如果设置了DPI需要进行坐标修正

_inner_click(self, flag, click_type, x_offset, y_offset)
_inner_long_click(self, flag, x_offset, y_offset, duration)
click(self, x_offset, y_offset)
double_click(self, x_offset, y_offset)
right_click(self, x_offset, y_offset)
long_click(self, x_offset, y_offset, duration=1)
hover(self, x_offset, y_offset)
scroll(self, backward=True)
send_keys(self, keys)
activate(self, is_true=True)

激活当前窗口

参数:is_true (bool) – 是否激活,默认为True
screenshot(self)

当前WebView的截图 :return: PIL.Image

upload_file(self, file_path)
class qt4c.webview.iewebview.Mouse

Bases: object

鼠标操作静态类

_last_click_time
static handle_position(x, y)

坐标转换

static click(x, y, flag=MouseFlag.LeftButton, clicktype=MouseClickType.SingleClick)

鼠标点击(x,y)点

参数:
static _clickSlowly(x, y, flag=MouseFlag.LeftButton, interval=0.1)

模拟鼠标缓慢点击,在鼠标键按下和释放之间存在一个interval的时间间隔

static sendClick(hwnd, x, y, flag=MouseFlag.LeftButton, clicktype=MouseClickType.SingleClick)

在目标窗口通过SendMessage方式产生鼠标点击的动作

参数:
  • hwnd (整数) – 目标窗口句柄
  • x (整数) – 屏幕x坐标
  • y (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
  • clicktype (枚举类型, MouseClickType.SingleClick | MouseClickType.DoubleClick) – 鼠标键点击方式
static postClick(hwnd, x, y, flag=MouseFlag.LeftButton, clicktype=MouseClickType.SingleClick)

在目标窗口通过PostMessage的方式产生鼠标点击的动作

参数:
  • hwnd (整数) – 目标窗口句柄
  • x (整数) – 屏幕x坐标
  • y (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
  • clicktype (枚举类型, MouseClickType.SingleClick | MouseClickType.DoubleClick) – 鼠标键点击方式
static sendNCClick(hwnd, x, y, flag=MouseFlag.LeftButton, clicktype=MouseClickType.SingleClick)

在目标窗口的Non-Client区域通过发消息的方式产生鼠标点击的动作

参数:
  • hwnd (整数) – 目标窗口句柄
  • x (整数) – 屏幕x坐标
  • y (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
  • clicktype (枚举类型, MouseClickType.SingleClick | MouseClickType.DoubleClick) – 鼠标键点击方式
static drag(fromX, fromY, toX, toY, flag=MouseFlag.LeftButton, intervaltime=1)

鼠标从(fromX, fromX)拖拽到(toX, toY)

参数:
  • fromX (整数) – 屏幕x坐标
  • fromY (整数) – 屏幕y坐标
  • toX (整数) – 屏幕x坐标
  • toY (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
static press(x, y, flag=MouseFlag.LeftButton)

在某个位置按下鼠标键

参数:
  • x (整数) – 屏幕x坐标
  • y (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
static release(x, y, flag=MouseFlag.LeftButton)

在某个位置释放鼠标键,与press配对使用

参数:
  • x (整数) – 屏幕x坐标
  • y (整数) – 屏幕y坐标
  • flag (枚举类型, MouseFlag.LeftButton|MouseFlag.MiddleButton|MouseFlag.RightButton) – 鼠标键类型
static postMove(hwnd, toX, toY)
static sendMove(hwnd, toX, toY)
static move(toX, toY)

鼠标移动到(tox,toy)

参数:
  • x (int) – 屏幕x坐标
  • y (int) – 屏幕y坐标
static getPosition()

当前Mouse的位置

static getCursorType()

返回当前鼠标图标类型

返回类型:MouseCursorType
static scroll(bForward=False)

鼠标滚动 bForward: True则向前滚动,False则向后滚动。默认是False。

class qt4c.webview.iewebview.MouseFlag

Bases: object

鼠标按键枚举类

class qt4c.webview.iewebview.MouseClickType

Bases: object

鼠标点击枚举类

class qt4c.webview.iewebview.IEWebView(ie_window_or_hwnd)

Bases: qt4c.webview.base.WebViewBase

IE WebView实现

_get_frame_window_by_xpath(self, frame_xpaths)

根据xpath查找对应的frameIHTMLWindow对象

eval_script(self, frame_xpaths, script, use_eval=True)

在指定frame中执行JavaScript,并返回执行结果

参数:
  • frame_xpaths (list) – frame元素的XPATH路径,如果是顶层页面,怎传入“[]”
  • script (string) – 要执行的JavaScript语句
highlight(self, elem_xpaths)

使元素高亮

参数:elem_xpaths (list) – 元素的XPATH路径