【Watir Webdriver】QQメールボックスに自動的にログインし、電子メールを送信
最近Web driverに再熟知し、以前Seleniumを模索したことがあるが、Watir+Webdriverも使いやすいことに気づいた.
以下は、QQメールボックスにログインし、メールを送信するスクリプトです.受信者、テーマ、本文、添付ファイルを指定し、最後に送信に成功したことを確認します.そうしないと、スクリーンショットを保存します.
説明:
1、スクリプトでwait_を頻繁に使用するuntil_present、保険のためです.もっと優雅な方法があるのではないでしょうか.
2、自分で開発したページではない場合は、ページのソースコード構造を分析する必要があります.例えば、QQメールボックスページでは、メール関連の様々な要素を正確に特定するためにframe(:id,'mainFrame')があることに注意する必要があります.
3、添付ファイルを追加する方法は手作業でクリックしたのではなく、ダイアログが出ない
4、スクリーンショットが便利で、browserを使う.screenshot.save
次にWatir+WebdriverのWEB UI自動化における様々な応用をゆっくりとまとめる.
以下は、QQメールボックスにログインし、メールを送信するスクリプトです.受信者、テーマ、本文、添付ファイルを指定し、最後に送信に成功したことを確認します.そうしないと、スクリーンショットを保存します.
説明:
1、スクリプトでwait_を頻繁に使用するuntil_present、保険のためです.もっと優雅な方法があるのではないでしょうか.
2、自分で開発したページではない場合は、ページのソースコード構造を分析する必要があります.例えば、QQメールボックスページでは、メール関連の様々な要素を正確に特定するためにframe(:id,'mainFrame')があることに注意する必要があります.
3、添付ファイルを追加する方法は手作業でクリックしたのではなく、ダイアログが出ない
4、スクリーンショットが便利で、browserを使う.screenshot.save
# coding: gb2312
require 'watir-webdriver'
# String gb2312, gb2312 , Watir
class String
def gb2312
self.encode("gb2312")
end
end
# chrome driver
browser = Watir::Browser.new :chrome
begin
# QQ
browser.goto 'http://mail.qq.com'
#
browser.text_field(:name,"uin").wait_until_present
browser.text_field(:name,"uin").send_keys("QQ ")
#
browser.text_field(:name, "p").wait_until_present
browser.text_field(:name, "p").send_keys(" ")
#
browser.input(:id, "btlogin").wait_until_present
browser.input(:id, "btlogin").click
#
browser.a(:id,"composebtn").wait_until_present
browser.a(:id,"composebtn").click
#
browser.frame(:id,'mainFrame').input(:xpath,"//div[@id='toAreaCtrl']/div[@class='addr_text']/input").wait_until_present
browser.frame(:id,'mainFrame').input(:xpath,"//div[@id='toAreaCtrl']/div[@class='addr_text']/input").send_keys(' ')
#
browser.frame(:id,'mainFrame').input(:xpath, "//td[@class='content_title']/div/div/div/input[@id='subject']").wait_until_present
browser.frame(:id,'mainFrame').input(:xpath, "//td[@class='content_title']/div/div/div/input[@id='subject']").send_keys(' ')
#
browser.frame(:id,'mainFrame').iframe(:xpath, "//td[@class='qmEditorContent']/iframe").wait_until_present
browser.frame(:id,'mainFrame').iframe(:xpath, "//td[@class='qmEditorContent']/iframe").send_keys(' ')
#
browser.frame(:id,'mainFrame').file_field(:name, 'UploadFile').set('C:/watir/qqmail.rb')
#
browser.frame(:id,'mainFrame').a(:name, "sendbtn").wait_until_present
browser.frame(:id,'mainFrame').a(:name, "sendbtn").click
#
sleep 60
# ,
browser.frame(:id,'mainFrame').b(:id, "sendinfomsg").wait_until_present
acctual_send_result_info = browser.frame(:id,'mainFrame').b(:id, "sendinfomsg").text.gb2312
expect_send_result_info = " "
if acctual_send_result_info != expect_send_result_info
browser.screenshot.save('d:/qqmail.rb.error.png')
raise " (#{acctual_send_result_info}) (#{expect_send_result_info})"
end
puts " "
rescue => error
puts " :#{error}"
ensure
browser.close if browser
end
次にWatir+WebdriverのWEB UI自動化における様々な応用をゆっくりとまとめる.