2014-02-25 79 views
1

隨着我能搶的HTML特定的腳本標籤如何使用頁面對象寶石和紅寶石

scripts = @browser.scripts 
index = scripts.find_index {|s| s.html.include? 'mytest.string'} 
icode = scripts[index].html 
etc. 

我要找的字符串是獨一無二的,部分較長的Watir與腳本標籤工作串。我需要驗證更長的字符串是否正確。現在我按照上面的描述來做,但是如果可能的話,寧願做頁面對象的方式。我正在使用頁面對象gem和ruby代碼的其餘部分。如果可能的話,希望對此腳本標記也做同樣的處理。如果沒有,我會堅持watir的方式。

一如既往的讚賞您的幫助。

回答

0

我假設你的HTML有這樣的:

<html> 
    <body> 
    <script>other random script</script> 
    <script>some stuff mytest.string some other stuff</script> 
    <script>another random script</script> 
    </body> 
</html> 

要獲得頁面對象寶石腳本元素,你可以使用通用的element訪問。然後,您可以將頁面對象定義爲:

class MyPage 
    include PageObject 

    element(:test_script, :script, :xpath => '//script[contains(text(), "mytest.string")]') 
end 

在此,我使用了:xpath定位器通過其文本查找腳本。使用:xpath通常不是建議的選擇,但是我找不到另一種解決方案。你不能使用:text locator,因爲Watir只返回可見的文本,這對腳本元素來說是沒有用的。 :xpath定位器允許你繞過這個約束。

利用所定義的這個頁面,你可以得到腳本元素的HTML如下:

page = MyPage.new(browser) 
page.test_script_element.html 
#=> "<script>some stuff mytest.string some other stuff</script>" 
+0

感謝賈斯汀。我會試試這個。希望避免xpath,但如果它是唯一的方法,那麼我會使用它。 –