Neu mit Selen ruby aber im Grunde, was ich zu tun, wollen Pass contact['rob', 'email', 'subject', 'message']
inRuby übergibt Werte in Methode? WebDriver
def contact(name="Default", email="Default", subject="Default", message="Default")
@name = name
@email = email
@subject = subject
@message = message
und dann, wenn Werte übereinstimmen unter Ausführen von Code:
if(name == 'rob' && email == 'email' && subject == 'subject' && message == 'message')
name_field = driver.find_element :css => ('#wpcf7-f375-p28-o1 > form > p:nth-child(2) > span > input')
name_field.click
name_field.send_keys(name)
email_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(3) > span > input'
email_field.click
email_field.send_keys(email)
subject_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(4) > span > input'
subject_field.click
subject_field.send_keys(subject)
message_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(5) > span > textarea'
message_field.click
message_field.send_keys(message)
else
puts 'failed'
end
end
Voll Code:
require 'rubygems'
require 'selenium-webdriver'
class Standard_web_driver_test2
driver = Selenium::WebDriver.for :firefox
driver.get 'http://demoqa.com/contact/'
driver.manage.window.maximize
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
def contact(name="Default", email="Default", subject="Default", message="Default")
@name = name
@email = email
@subject = subject
@message = message
if(name == 'rob' && email == 'email' && subject == 'subject' && message == 'message')
name_field = driver.find_element :css => ('#wpcf7-f375-p28-o1 > form > p:nth-child(2) > span > input')
name_field.click
name_field.send_keys(name)
email_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(3) > span > input'
email_field.click
email_field.send_keys(email)
subject_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(4) > span > input'
subject_field.click
subject_field.send_keys(subject)
message_field = driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(5) > span > textarea'
message_field.click
message_field.send_keys(message)
else
puts 'failed'
end
end
contact['rob', 'email', 'subject', 'message']
end
Ich bin mir sicher, dass es einen einfacheren Weg gibt, dies zu tun, aber ich versuche nur, mich an die Verwendung von Blöcken mit Code zu gewöhnen.
Fehlermeldung: ': nicht definiert lokale Variable oder Methode `Kontakt' für Standard_web_driver_test2: Klasse (Nameerror)
Neuer Code vor mit globalen Variablen:
require 'rubygems'
require 'selenium-webdriver'
class StandardWebdriverTest2
@@driver = Selenium::WebDriver.for :firefox
@@driver.get 'http://demoqa.com/contact/'
@@driver.manage.window.maximize
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
def self.contact(name="Default", email="Default", subject="Default", message="Default")
@name = name
@email = email
@subject = subject
@message = message
if(name == 'rob' && email == 'email' && subject == 'subject' && message == 'message')
name_field = @@driver.find_element :css => ('#wpcf7-f375-p28-o1 > form > p:nth-child(2) > span > input')
name_field.click
name_field.send_keys(name)
email_field = @@driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(3) > span > input'
email_field.click
email_field.send_keys(email)
subject_field = @@driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(4) > span > input'
subject_field.click
subject_field.send_keys(subject)
message_field = @@driver.find_element :css => '#wpcf7-f375-p28-o1 > form > p:nth-child(5) > span > textarea'
message_field.click
message_field.send_keys(message)
else
puts 'failed'
end
end
contact('rob', 'email', 'subject', 'message')
end
Danke :) Ich habe keine Fehler, keine in der Konsole, wenn Sie laufen, aber name_field.send_keys (Name) Werte werden nicht hineingeschoben, so muss Somethi sein ng sonst – Speedychuck
ja das ist etwas web-treiber funktional problem ..... vorschlag ist bitte überprüfen name_filed wird richtig wählen, um schlüssel zu senden –
Web-treiber-code funktioniert außerhalb der methode block aber einmal drinnen nicht laufen :(@ Rajarshi Das – Speedychuck