ruby webdriver处理flash类型的图片上传
一般的图片上传能用send_keys("图片路径")解决
但是遇到flash类型的图片上传,send_keys()就无奈了,这时候我们可以引用第三方工具autoit来进行操作
这边提供一个实例
#encoding:utf-8
require 'selenium-webdriver'
require 'test/unit'
require 'rubygems'
require 'win32ole'
class OpentestCase<Test::Unit::TestCase
def setup
@dr = Selenium::WebDriver.for :chrome
@url ="http://bbs.opentest.cn"
@dr.get @url
sleep 1
end
def test_should_enter_into_post_page_successfully
@dr.find_element(:xpath,"//*[@id='category_63']/table/tbody/tr[1]/td[2]/h2/a").click
sleep 1
@dr.find_element(:id,'newspecial').click
@dr.find_element(:id,'subject').send_keys("tim post a message")
@dr.find_element(:id,'e_attach').click
@dr.find_element(:id,'SWFUpload_1').click
at = WIN32OLE.new('AutoItX3.Control')
#等待窗口出现
at.WinWait("选择要上载的文件,通过:bbs.opentest.cn", "", 2)
#等待窗口激活
at.WinActivate("选择要上载的文件,通过:bbs.opentest.cn")
sleep 2
#设置控件文本
at.ControlFocus( "选择要上载的文件,通过: bbs.opentest.cn", "", "[CLASS:Edit; INSTANCE:1]" )
at.Send("D:\\image\\1.jpg")
sleep 2
#模拟键盘alt+o
at.Send("!O")
sleep 2
@dr.find_element(:id,'attach_confirms').click
@dr.switch_to.frame('e_iframe')
@dr.find_element(:xpath,"//body").send_keys("tim post a message")
@dr.switch_to.default_content
@dr.find_element(:id,'postsubmit').click
end
def test_postpage_title_correctly
title = @dr.find_element(:id,'thread_subject').text
assert(title,"tim post a message")
end
def teardown
@dr.close
end
end
浙公网安备 33010602011771号