ich einen seltsamen Fall hatte, wo einige Rauchversuche über verschiedene kundenorientierte Login-Seiten marschierten die auf tun die Login leichten Variationen hatte Submit-Button ... durch eine Gurke Tabelle anzeigen Driven, org , etc.
# A bit of a hack, org_name is normally a subdomain, but sometimes it is the complete domain
def login(user, org_name)
# Use the below to automatically hit each user's org's server
if org_name.include? '.com'
Capybara.app_host = "http://#{org_name}"
else
Capybara.app_host = "http://#{org_name}.mydomain.com"
end
visit '/'
fill_in 'username', :with => user
fill_in 'userpwd', :with => '***'
begin
page.find(:link_or_button, 'submit')
click_on 'submit'
rescue Capybara::ElementNotFound
page.find(:link_or_button, 'Log In')
click_on 'Log In'
rescue Capybara::ElementNotFound
pending "Need to determine how to invoke the Login button for #{org_name} near Line ##{__LINE__} of #{__method__} in #{__FILE__} "
end
# -----------------------
# Work-around for modal popup saying SSL is mismatched if you are using actual production URLs
# The rescue is for cases that do not exhibit the modal pop-up
page.driver.browser.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertPresentError
# Ensure that login was successful
page.should_not have_content 'Login failed'
end
Ich wollte das wegen Javascript-Links machen, aber dann entschied ich mich nicht: in diesem Fall ist es * möglich * zu unterscheiden. Z. B. öffnet sich bei einem mittleren Klick ein neuer Tab, und beim Hover wird das Link-Ziel nur für den Link angezeigt. Die beste Vorgehensweise ist: Verwenden Sie in diesem Fall keine Links und lassen Sie sie nicht in Tests zu. –
Es gibt jedoch einen Fall, in dem es sich lohnt: Negation. Andernfalls, wenn Sie Links in Schaltflächen ändern, werden die Tests stillschweigend immer ausgeführt. –