Я хотел бы собрать весь текст параметров в раскрывающемся меню, чтобы иметь возможность перебирать этот массив.Для каждого текста опции я хотел бы щелкнуть эту опцию, затем перейти на другую страницу и иметь возможность вернуться на исходную страницу, чтобы продолжить поиск по массиву.
По сути это было бы похоже на
for i in drop_down_menu
collect option text
append option text to an array
for i in array
choose i
click button that navigates to different page
go back to previous page
i+1
Я пытался выяснить, как я могу получить только текст опций, но ничего не работает.Я полагаю, что текст должен быть строками в списке.
Я пытался проверить, есть ли у меня массив с is_instance ?, type_of ?, is_a?(Я где-то читал, что последние 2 одинаковы, но я подумал, что не мешало бы попробовать!), И это не удалось ... Когда я смотрю элементы внутри, они тоже не являются строками.
Этомой код до сих пор:
sel = @driver.find_element(:id, 'txt_source') #This is the drop down menu's id
all_options = sel.find_elements(:tag_name ,'option') #These are the options
all_options.each do |option| #iterating through each option with i as option
puts "Value is: " + option.attribute("text") #Just me checking what I have in the list
next if option.text == "" #The first option is a blank so I skip it
option.click #click the option
@driver.find_element(xpath: '//*[@id="search_button"]/button[2]').click # Button
@driver.find_element(xpath: '//*[@id="search_button"]/div/a[3]').click # Another button
@driver.find_element(xpath: '//*[@id="main_action"]').click # This is the button that navigates to a diff page
@driver.switch_to.default_content # Switching iframe
wait = Selenium::WebDriver::Wait.new(:timeout => 60) # Waiting
wait.until {@driver.find_element(:id, 'action_frame')} # Finding iframe
@driver.switch_to.frame('action_frame') # Outer iframe
@driver.switch_to.frame('app_display') # iframe I need
sleep(10) # Sleep to help me see what's going on
puts "Found the frames" # Note
@driver.find_element(xpath: '/html/body/table/tbody/tr[2]/td/table/tbody/tr[2]/td/input').click # Button for download
sleep(10) # Viewing
@driver.switch_to.default_content #Swtich back frames
@driver.find_element(xpath: '//li[@id="app_sub3"]/a').click # Button that returns me to previous page. It's a tab.
puts "Clicking for search" # Note
sleep(10) # View
end
Это работает, пока я не вернусь на предыдущую страницу.Поскольку страница обновляется, я получаю страшную ошибку StaleElement.
Я ожидал, что он будет циклически перебирать каждую опцию в all_options, переходить на другую страницу для выполнения каких-то действий, возвращаться к исходной странице и переходить к следующей опции, чтобы делать то же самое.