Currently I'm trying use a statement IF (If a button appears in the page, then run the IF), see the method Login in the system:
If the button doesn't appear in the page, I would like to run the next method Remove and add new expense
require "selenium-webdriver"
require "rspec"
require "rspec/expectations"
describe "#Add simple expense and after add a receipt", :suitee => true do
before(:all) do
@driver = Selenium::WebDriver.for :chrome
@base_url = "http://sitetest.com"
@driver.manage.window.maximize
end
it "Login in the system" do
@driver.get(@base_url)
@driver.find_element(:id, "user_email").send_keys "raf...@gmail.com"
@driver.find_element(:id, "user_password").send_keys "123456"
@driver.find_element(:name, "commit").click
if(@driver.find_element(:css, ".btn.btn-lg.btn-success.btn-block").displayed?)
@driver.find_element(:css, ".btn.btn-lg.btn-success.btn-block").click
@driver.find_element(:css, ".introjs-button.introjs-skipbutton").click
@driver.find_element(:css, ".i.i-pencil").click
end
end
it "Remove and add new expense" do
begin
while(@driver.find_element(:css, ".i.i-pencil.icon").displayed?)
button = @driver.find_element(:id, "expense-bulk-select")
@driver.action.click(button).perform
delete = @driver.find_element(:id, "delete-multi-btn")
@driver.action.click(delete).perform
waitDisplayModal = Selenium::WebDriver::Wait.new(:timeout => 10)
waitDisplayModal.until {@driver.find_element(:class => "bootstrap-dialog-footer-buttons")}
@driver.find_element(:xpath, "//div[3]/div/div/button[2]").click
sleep 3
end
rescue Selenium::WebDriver::Error::NoSuchElementError
@driver.find_element(:id, "current_expense_merchant").send_keys "Taxi to work"
@driver.find_element(:id, "current_expense_amount").send_keys "50"
@driver.find_element(:id, "button-add-expense").click
waitDisplayIconTrash = Selenium::WebDriver::Wait.new(:timeout => 20)
waitDisplayIconTrash.until {@driver.find_element(:css => ".i.i-pencil.icon")}
end
end
after(:all) do
@driver.quit
end
end
My problem: When I run this script, appears this in my console:
Failure/Error: if(@driver.find_element(:css, ".btn.btn-lg.btn-success.btn-block").displayed?)
Selenium::WebDriver::Error::NoSuchElementError:
no such element
(Session info: chrome=42.0.2311.135)
(Driver info: chromedriver=2.9.248304,platform=Linux 3.13.0-24-generic x86_64)
That is, the IF is not working as I would like. How can I fix it?
CHeers
.btn.btn-lg.btn-success.btn-block
CHeers
save_and_open_page
One more thing is to check if you enable selenium ddriver in your rspec config file:
Capybara.default_driver = :selenium
On 28 May 2015, at 14:24, Scott Ribe <scott...@elevated-dev.com> wrote:On May 28, 2015, at 6:15 AM, Rafael s <rafae...@gmail.com> wrote:
I want to just make one condition: IF find the button...clicks, else continues execution of the other methods
If the button doesn’t exist, you’re calling displayed? on it anyway.
def displayed? bridge.isElementDisplayed @id end
--
You received this message because you are subscribed to a topic in the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rubyonrails-talk/LyRY6Xm0nl4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/1A37A3B8-A6E8-4E0E-AF3A-F7D098EC0DA7%40elevated-dev.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rubyonrails-talk/LyRY6Xm0nl4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/38c137c3-e1cc-44b4-b9ca-8f592543a9da%40googlegroups.com.
but that's exactly what I want! I know that sometimes the element will not appear on the screen, so I need it to run another method, it is exactly this treatment I am trying to do. for this reason I put the IF condition. If the element exists, takes an action, orexists, performs the following method. Just to be clear, how would you do this?
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/a1f9f8d0-3b42-440a-843d-061cc6b50088%40googlegroups.com.