常见的watir-webdriver非标准html元素操作代码

1、 如何获取一个元素的像素位置?

location = browser.element(:id, 'xxx').wd.location 

x = location[0]   ##获取x坐标像素,这里以浏览器页面左上角为相对位置

y = location[1]   ##获取y坐标像素

 

2、 如何使用autoit操作鼠标键盘?

require "WIN32OLE"   ##引入WIN32OLE

autoit = WIN32OLE.new("AutoItX3.Control")  ##实例一个autoit对象

autoit.MouseMove(x, y)   ##移动鼠标到指定的x,y坐标。这里以显示屏的左上角为相对位置【因为autoit不是只针对浏览器的库,而是Windows通用的库】

autoit.MouseClick("left") 

autoit.Send("WSPresentation.avi")

autoit.Send("{ENTER}")

更多关于autoit支持的方法和使用详见:http://www.autoitscript.com/autoit3/docs/functions/Send.htm

 

3、如何处理JS中的弹框情况?【仅支持alert、confirm、prompt三种对话框】

def deal_alert(browser, operation="")

  if browser.alert.exists?  # Check if alert is shown

    text = browser.alert.text    # Gettext of alert

    if operation=="ok"

      browser.alert.ok    #click ok

    elsif ["cancel","close"].include? operation

      browser.alert.close    # click close

    end

    puts text

  else

    puts "alert dialog not exist!"

  end

end

 

def deal_confirm(browser, operation="")

  deal_alert(browser, operation)

end

 

def deal_prompt(browser, message, operation="")

  if browser.alert.exists?  # Check if alert is shown

    text = browser.alert.text    # Gettext of alert

    browser.alert.set message unless message==nil

    sleep 1

    if operation=="ok"

      browser.alert.ok    #click ok

    elsif ["cancel","close"].include? operation

     browser.alert.close     # click close

    end

    puts text

  else

    puts "alert dialog not exist!"

  end

end

更多关于弹框的支持与方法请见:https://github.com/watir/watir-webdriver/issues/112

 

3、 如何处理文件上传、文件下载等对话框?

关于文件上传、下载【包括安全提示、用户认证等】弹框,watir-webdriver本身并不支持识别与操作。所以无法通过webdriver直接调用。

解决方法:

1、 对于文件上传选择,因为最终目的是设置file的路径,所以可以通过以下实现而避免操作文件上传对话框:

browser.file_field(:id,“xxx”).set(file_path)  ##注意文件路径必须有效,否则报错

2、对于其它弹框、或者文件上传不是html实现【如flash】则只能曲线通过autoit模拟鼠标和键盘来实现。

你可能感兴趣的:(dialog,watir,watir-webdriver)