Есть ли проверка достоверности для уже зарегистрированного идентификатора электронной почты в ruby программировании - PullRequest
0 голосов
/ 14 апреля 2020
# load in the webdriver gem to interect with selenium
require 'selenium-webdriver'
#setup chrome plugin
driver = Selenium::WebDriver::Chrome.driver_path='C:\Users\vidhi\Desktop\Ruby Folder\chromedriver.exe'
#this line will start the browser
driver = Selenium::WebDriver.for :chrome
wait = Selenium::WebDriver::Wait.new(:timeout => 20)

def document_initialised(driver)
  driver.execute_script('return initialised')
end
#Navigate to URl
driver.get "http://automationpractice.com/index.php?controller=authentication&back=my-account#account-creation"
#Maximize the window
driver.manage.window.maximize
sleep 6
driver.action.key_down(:enter).perform
sleep 5

driver.find_element(:id,"email_create").send_keys "demouser099@gmail.com"
sleep 5
driver.action.key_down(:enter).perform
driver.find_element(:id,"SubmitCreate").click
sleep 2
driver.action.key_down(:enter).perform

#### Check that the radio button exists
puts "Test Passed: Radio button found" if wait.until {
  driver.find_element(:id,"uniform-id_gender2").displayed?
}

#Change the state of the Radio Buttons
cb1 = wait.until {
  element1 = driver.find_element(:id,"uniform-id_gender1")
  element1 if element1.displayed?
}
cb1.click if cb1.selected? == false

cb3 = wait.until {
  element2 = driver.find_element(:id,"uniform-id_gender2")
  element2 if element2.displayed?
}
cb3.click if cb3.selected? == false
sleep 4
driver.find_element(:id,"customer_firstname").send_keys "demo"
sleep 3
driver.find_element(:id,"customer_lastname").send_keys "user"
sleep 5
password=driver.find_element(:id,"passwd").send_keys "demo@123"
sleep 4

if driver.find_element(:id,"uniform-days").displayed?
  puts "Days dropdown is displayed.."
  select = driver.find_element(:id,"uniform-days")
  alloptions = select.find_elements(:tag_name,"option")
  puts alloptions.size

  alloptions.each do  |option|
    puts "Value is.."+option.attribute("value")
    if option.attribute("value")=="20"
      option.click
      puts "Value has been selected.."
      sleep 5
      break
    end
  end
end

month_dropdown = driver.find_element(:id,"months")
months=Selenium::WebDriver::Support::Select.new(month_dropdown)
months.select_by(:text,"April ")
puts driver.find_element(:id,"months").text.include?("April")

years_dropdown = driver.find_element(:id,"years")
years=Selenium::WebDriver::Support::Select.new(years_dropdown)
years.select_by(:index,28)
sleep 3

driver.find_element(:id,"address1").send_keys "45 calony A"
sleep 4

if driver.find_element(:id,"uniform-id_state").displayed?
  puts "State dropdown is displayed.."
  select = driver.find_element(:id,"uniform-id_state")
  alloptions = select.find_elements(:tag_name,"option")
  puts alloptions.size

  alloptions.each do  |option|
    puts "Text is.."+option.attribute("text")
    if option.attribute("text")=="California"
      option.click
      puts "text has been selected.."
      sleep 5
      break
    end
  end
end
#Enter city
driver.find_element(:id,"city").send_keys "Los Angeles"
sleep 4
driver.find_element(:id,"postcode").send_keys "23654"
Country_dropdown =driver.find_element(:id,"id_country")
country=Selenium::WebDriver::Support::Select.new(Country_dropdown)
country.select_by(:index,1)
sleep 5

#Input Mobile Number
driver.find_element(:id,"phone_mobile").send_keys "985256238"
sleep 5

#Click on Submit button
driver.find_element(:id,"submitAccount").click
sleep 5

У меня есть сценарий записи для формы регистрации. Я запустил свой сценарий автоматизации, после чего в первый раз он успешно прошел, но при повторном запуске с тем же идентификатором электронной почты он показывает сообщение проверки, поскольку электронная почта уже существует, попробуйте новую. . Так что для этой проверки, что утверждение в ruby?

Вот ссылка для регистрации формы - http://automationpractice.com/index.php?controller=authentication&back=my-account#account -создание

1 Ответ

1 голос
/ 14 апреля 2020

Общие примечания:

Я вижу, что у вас есть определенный метод, который вы не используете.

def document_initialised(driver)
  driver.execute_script('return initialised')
end

Также, кажется, что некоторые -нужное присвоение переменных и не нужно driver.action.key_down(:enter).perform

Можно создать класс, чтобы ваш код был более структурированным;)

На ваш вопрос:

Я бы создал if, чтобы проверить, отображается ли ошибка на странице или нет после того, как вы отправили с помощью driver.find_element(:id,"SubmitCreate").click. Вы можете увидеть пример об этом в #register_email в моем примере.

Если я создаю из него какой-то класс и выполняю какое-то другое удаление кода, я думаю, что он устарел, это выглядит так (но это не было проверено мной).

# load in the webdriver gem to interect with selenium
require 'selenium-webdriver'

class RegisterUser
  def run
    return unless register_email
    do_the_rest
  end

  private

  def driver
    return @driver if @driver.present?

    Selenium::WebDriver::Chrome.driver_path='C:\Users\vidhi\Desktop\Ruby Folder\chromedriver.exe'
    @driver = Selenium::WebDriver.for(:chrome)
    @driver.get "http://automationpractice.com/index.php?controller=authentication&back=my-account#account-creation"
    sleep 6
    @driver.manage.window.maximize
    @driver
  end

  def wait 
    Selenium::WebDriver::Wait.new(:timeout => 20)
  end

  def register_email
    driver.find_element(:id,"email_create").send_keys "demouser099@gmail.com"
    driver.find_element(:id,"SubmitCreate").click
    sleep 5

    return true unless driver.find_element(:id,"create_account_error").displayed?

    # An account using this email address has already been registered. 
    # Please enter a valid password or request a new one.
    puts driver.find_element(:id,"create_account_error").text
    false
  end

  def do_the_rest
    # Here you can put the rest of the code, or clean up even more and split into multiple methods
  end
end

RegisterUser.new.run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...