簡體   English   中英

在ruby / watir中使用變量選擇元素

[英]selecting elements using variables in ruby /watir

我遇到的真正問題是網頁中下拉列表填充的延遲。

我在腳本中使用的電話是:-

   clickOndropDown(":id","dropDownAutocomplete","ABC",@b)

其中1. clickOndropDown是調用的方法2. id是元素選擇器(可以是:id,xpath或:css [它們是我的html代碼中用於不同下拉框的不同選擇器)以處理代碼中的所有情況)3 。ABC是要從下拉列表中選擇的元素4. @b是瀏覽器對象

函數定義為:

    def clickOndropDown(identifier,selector,targetVal,br)

            begin
                puts "starting off"     # gets printed
                br.element("#{identifier}" => "#{selector}").fire_event :click #--- does not work--- 
                # br.element(:id => "#{selector}").fire_event :click           #--- works 
                puts "inside selector pass 1"

                br.element(:link, targetVal).fire_event :click  
               ...
               ...
               # rest of the code

它不會引發任何異常。.select語句之前的push語句也不會。

#(-“#{identifier}”)是否有任何通配符處理程序,以便我可以編寫一個用於處理id,xpath或css的代碼

我很驚訝沒有例外。 我期望MissingWayOfFindingObjectException

問題在於標識符是String而不是Symbol 無效的行等效於:

br.element(":id" => "dropDownAutocomplete")

這與以下內容不同:

br.element(:id => "dropDownAutocomplete")

注意之間的差異String":id" ,和Symbol:id

您應該更改方法調用以發送Symbol並更改方法以不再將其更改為String

def clickOndropDown(identifier,selector,targetVal,br)
  br.element(identifier => selector).fire_event :click
end

clickOndropDown(:id,"dropDownAutocomplete","ABC",@b)

如果您想要一種更通用的方法,最好讓clickOndropDown接受定位器的Hash值。 這將允許您接受多個定位器條件。

def click_on_dropdown(br, target_val, locator)
  br.element(locator).fire_event :click
end

# Call for the original example
click_on_dropdown(@b, "ABC", id: "dropDownAutocomplete")

# Call with multiple selectors
click_on_dropdown(@b, "ABC", id: "dropDownAutocomplete", name: "name_value")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM