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模拟鼠标和键盘来实现。