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