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.maximizeend
it “Login in the system” do
@driver.get(@base_url)
@driver.find_element(:id, “user_email”).send_keys “[email protected]”
@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
endend
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”)}
endend
after(:all) do
@driver.quit
endend
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