ruby
  • parsing
  • popup
  • watir
  • watir-webdriver
  • 2011-12-12 40 views 1 likes 
    1

    我對watir-webdriver有一個非常奇怪的問題。Watir-webdriver,即使發現它也不能「投射」到子類型的元素

    這裏的輸入標籤我試圖達到的快照(不能想出一個辦法來獲取源的JavaScript創建彈出後,大聲笑)

    HTML of the input tag 反正這裏是我的一些代碼使用XPath來定位這些元件(有兩個文本字段和一個選擇標記)

    firstname = b.element(:xpath, "//div[@class='ap_popover']/input[@name='firstName']") 
    lastname = b.element(:xpath, "//div[@class='ap_popover']/input[@name='lastName']") 
    authorselector = b.element(:xpath, "//div[@class='ap_popover']/select") 
    puts firstname 
    puts lastname 
    puts authorselector 
    

    此代碼成功地返回的Watir元件對象。然而,當我嘗試丟掉。

    puts firstname.to_subtype 
    

    它怪胎:

    C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.4.1/ lib/watir-webdriver/elements/element.rb:262: `assert_exists':無法定位元素,使用 {:xpath =>「// div [@ class ='ap_popover']/input [@ name = 'lastName']「} (Watir :: Exception :: UnknownObjectException)

    那麼,發生了什麼事?它可以通過xpath找到他們沒有問題,但是當我試圖將它們全部突然xpath搜索失敗時?

    值得一提的是,我正在瀏覽的html是通過javascript完整創建的,因此爲什麼我不能在這裏複製\粘貼並不得不截圖。

    謝謝!

    +0

    而不是做元素 - >子類型。你可以直接訪問它'b.textfield(:name =>'firstName')'。最近watirwebdriver我一直有一些「無法找到元素」問題... –

    +0

    它無法找到確切的問題。頁面上還有另外一個可以作爲JavaScript加載的「原型」 - 但它永久隱藏,你不能(也不應該)與它進行交互。所以是的,它找到了一個帶有該名稱的文本字段,但它找到了錯誤的名稱。就好像它沒有意識到html已經被增強了。 –

    +0

    在這種情況下,'b.text_fields(:name =>'firstName')'應該返回它們兩個,你可以選擇第二個。 –

    回答

    4

    xpath是邪惡的,如果可能的話儘量避免。犯錯誤很容易,很難閱讀,而且速度通常較慢。

    您是否嘗試過類似

    b.div(:id => 'contributors-table').textfield(:name => 'firstName') 
    

    如果你有一些古怪無效的HTML,他們擁有的所有這些東西兩個副本(因而重複ID值,這是無效的HTML標準),那麼你可以添加在元素的INDEX中,在這種情況下,可能需要爲div容器使用該元素,如果其中有多個元素,則可能還需要輸入字段。

    b.divs(id => 'contributors-table').size #how many are there? 
    
    #example, second instance of the contributors table, third instance in that table of an text input field with the name 'firstName' 
    b.div(:id => 'contributors-table', :index => 1).textfield(:name => 'firstName', :index => 2) 
    
    +1

    你是一個流氓! –

    +1

    我希望這是一件好事嗎?大聲笑 –

    相關問題