Untitled
unknown
plain_text
3 years ago
4.5 kB
16
Indexable
require 'selenium-webdriver'
require 'socksify/http'
require 'watir'
require 'colorize'
require 'byebug'
def accept_appointment(driver)
begin
process = driver.find_element(id: 'idSede')
options = process.find_elements(tag_name: 'option')
options.first.click
accept_button = driver.find_element(id: 'btnSiguiente')
driver.execute_script("enviar()", accept_button)
phone_field = driver.find_element(id: 'txtTelefonoCitado')
phone_field.send_keys('+40766513834')
email_field = driver.find_element(id: 'emailUNO')
email_field.send_keys('dezsirazvan@gmail.com')
email_2_field = driver.find_element(id: 'emailDOS')
email_2_field.send_keys('dezsirazvan@gmail.com')
accept_button = driver.find_element(id: 'btnSiguiente')
driver.execute_script("enviar()", accept_button)
rescue => exception
puts('error'.blue)
else
return
end
end
counter = 1
main_counter = 1
while true
puts("Try number: #{counter}".yellow)
# options = Selenium::WebDriver::Chrome::Options.new
# options.add_argument('--headless')
args = ['-headless']
options = Selenium::WebDriver::Chrome::Options.new(args: args)
driver = Selenium::WebDriver.for :chrome, options: options
# driver = Selenium::WebDriver.for :chrome, switches: %w[--incognito]
# driver.manage.window.move_to(1000,1200)
# driver.manage.window.minimize
driver.navigate.to "https://icp.administracionelectronica.gob.es/icpplus/index.html"
# this part is to select automatic Barcelona from the list
begin
element = driver.find_element(name: 'form')
options = element.find_elements(tag_name: 'option')
options.each { |option| option.click if option.text == 'Barcelona' }
# click btnAceptar to go to the next step
accept_button = driver.find_element(id: 'btnAceptar')
sleep 0.5
driver.execute_script("envia()", accept_button)
# select the first process
process = driver.find_element(id: 'tramiteGrupo[0]')
options = process.find_elements(tag_name: 'option')
# 4058 nie green/ 4096 tie
options.each do |option|
if option.attribute('value') == '4058'
sleep 0.5
option.click
driver.execute_script("cargaMensajesTramite()", option)
end
end
# select the real process
process = driver.find_element(id: 'tramiteGrupo[1]')
options = process.find_elements(tag_name: 'option')
options.each do |option|
if option.attribute('value') == '4096'
sleep 0.5
option.click
driver.execute_script("cargaMensajesTramite()", option)
end
end
# click btnAceptar to go to the next step
accept_button = driver.find_element(id: 'btnAceptar')
sleep 0.5
driver.execute_script("envia()", accept_button)
# accept_button.click
# click btnEntrar to go to the next step
accept_button = driver.find_element(id: 'btnEntrar')
sleep 0.5
driver.execute_script("document.forms[0].submit()", accept_button)
# this part is to select the passport radio button
passport_button = driver.find_element(id: 'rdbTipoDocPas')
sleep 0.5
passport_button.click
# add nie and name
nie_field = driver.find_element(id: 'txtIdCitado')
sleep 0.5
nie_field.send_keys('Nie number')
name_field = driver.find_element(id: 'txtDesCitado')
sleep 0.5
name_field.send_keys('Full name')
# click btnEnviar to go to the next step
accept_button = driver.find_element(id: 'btnEnviar')
sleep 0.5
driver.execute_script("envia()", accept_button)
# click btnEnviar to go to the next step
accept_button = driver.find_element(id: 'btnEnviar')
sleep 0.5
driver.execute_script("enviar('solicitud')", accept_button)
rescue
puts('Error from them...'.red)
driver.close()
320.downto(1) do |n|
puts n.to_s.green
sleep 1 # second
end
next
end
# accept_button.click
# find error message
begin
message = driver.find_element(class: 'mf-msg__info')
rescue => exception
accept_appointment(driver)
puts('I found a cita!!!'.green)
1.times do
`say Cita Found !!!!!!!!!`
puts(Time.now.to_s.green)
end
else
unless message.text.split('.').first.include?("En este momento no hay citas disponibles")
accept_appointment(driver)
puts('I found a cita!!!'.green)
5.times do
`say Cita Found !!!!!!!!!`
end
else
puts("#{Time.now.to_s} Cita not found :(".red)
driver.close()
end
end
counter += 1
end
Editor is loading...