1.如何查找iframe里面的元素
一般情況下,selenium 多是結合 Xpath 獲取元素屬性,但當頁面包括iframe 元素 ,并且 iframe 的src 是另一個page.html,這時如果要通過xpath 直接獲取iframe里的元素,算是跨域訪問,是獲得不到的,這時候capybara 的 within 方法,便可解決。 within_frame(frame_id) ,默認是iframe 的id,也可支持name,xpath 方式獲得。
ruby 代碼:
within_frame("frame_id") do 2 click_button "上傳表單" 3 end
2.如何測試confirm 對話框
capybara 測試confirm 對話框 ,有兩種情形:第一種判斷confirm 對話框的返回結果,如修改密碼成功等,另一種,刪除操作,彈出類似確定刪除的對話框。
針對第一種情形解決方法:等待返回結果文本,進行和預期對比,ruby 代碼:
alert=page.driver.browser.switch_to.alert2 # sleep Capybara.default_wait_time 若是ajax異步請求,則需要休眠等待 3 assert alert.text.should == "success!" 4 alert.accept
針對第二種情形:是對頁面彈出操作進行返回結果為真,進行測試,ruby 代碼:
page.evaluate_script('window.confirm = function() { return true; }')2 page.click_link "Destroy"