0
所以我使用一般的「I press」*「button」Gherkin語句來按下按鈕。我的問題是整個應用程序中的文本不是標準化的。Ruby/Appium:如何通過文本屬性從find_elements數組中選擇元素
我想要做的是使用find_elements來形成一個所有按鈕元素的數組,從我的小黃瓜輸入中獲取文本(例如:'我按「是」按鈕'),利用.casecmp方法忽略從find_elements數組中查找我的按鈕文本的大小寫,並比較文本屬性和我的Gherkin輸入。
這裏是我的代碼嘗試:
Then (/^I press the "([^"]*)" button$/) do |button_text|
#assign gherkin input to variable
@button_text = button_text
#create find_elements array for all Buttons
button_array = find_elements(xpath: "//android.widget.Button")
#create for loop that will compare each element's text with @button_text
button_array.each do |index|
#Attempting to reference text attribute of array at index and compare @button_text with case insensitive comparison
matching_button = button_array[index].text.casecmp("#{@button_text}")
if matching_button = 0 #this means it's a match
button_array[index].click()
else
end
end
end
目前我收到以下錯誤:
And I press the "YES" button # features/step_definitions_android/common_steps.rb:107
no implicit conversion of Selenium::WebDriver::Element into Integer (TypeError)
./features/step_definitions_android/common_steps.rb:113:in `[]'
./features/step_definitions_android/common_steps.rb:113:in `block (2 levels) in <top (required)>'
./features/step_definitions_android/common_steps.rb:111:in `each'
./features/step_definitions_android/common_steps.rb:111:in `/^I press the "([^"]*)" button$/'
features/FAB.feature:18:in `And I press the "YES" button'
我不能完全確定什麼這些錯誤在我的案件的意思,但我繼續我的研究。如果任何人都可以分享見解我做錯了,我將不勝感激。
也有任何有關如何在該陣列中存儲元素的文檔?我甚至可以將元素的文本屬性與變量或其他值進行比較?非常感謝您給我提供的任何幫助。
謝謝!對於我的情況,我不得不添加無案例的比較來解決我的套管問題,如下所示: button_array.each do | btn | btn.click if btn.text.casecmp(「#{button_text}」)== 0 end 否則這對於我所需要的非常完美,謝謝! –
很高興這可以幫助,另一種選擇,如果你不打擾案件,如果你可以轉換成較低或大寫,並比較,這裏是你是如何做到這一點... btn.text.downcase == button_text.downcase 樂於幫助!! –