[英]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.