lucianotonet commited on
Commit
5a69045
1 Parent(s): 171bd9d

chore: Update Chrome options and ChromeDriver version in app.py and Dockerfile

Browse files
Files changed (1) hide show
  1. app.py +27 -19
app.py CHANGED
@@ -34,6 +34,7 @@ try:
34
  driver.execute_cdp_cmd('Network.enable', {})
35
  except Exception as e:
36
  print(f"Erro ao iniciar o ChromeDriver: {e}")
 
37
 
38
  # Função para encontrar um elemento usando o XPath
39
  def find(xpath):
@@ -47,12 +48,14 @@ def login_marriottvc():
47
  find("//input[@id='username']").send_keys(os.getenv('MARRIOTT_USERNAME'))
48
  find("//input[@id='password']").send_keys(os.getenv('MARRIOTT_PASSWORD'))
49
  find("//button[@type='submit']").click()
 
50
 
51
 
52
  # Função para abrir a página de reserva de pontos
53
  def open_bookvacation_marriottvc():
54
  find("//a[contains(text(), 'USE POINTS')]").click()
55
  find("//li[contains(text(), 'Book Using Club Points')]").click()
 
56
 
57
 
58
  # Função para inserir o destino
@@ -60,31 +63,35 @@ def input_destination_marriottvc(dest):
60
  destination_box = find("//input[contains(@placeholder, 'Destination')]")
61
  destination_box.send_keys(dest)
62
  find("//ul[@class='hotel']//li[1]").click()
 
63
 
64
 
65
  # Função para inserir o número de hóspedes
66
  def input_guests_marriottvc(num_guests):
67
  find("//input[@id='numGuests']").clear()
68
  find("//input[@id='numGuests']").send_keys(num_guests)
 
69
 
70
 
71
  # Função para selecionar o mês desejado
72
  def input_month_marriottvc(month):
73
  find("//select[@id='searchbymonth']").click()
74
  print(calendar.month_name[month].lower())
75
- find(f"//option[@id='id_{calendar.month_name[month].lower()}2024']").click(
76
- )
77
 
78
 
79
  # Função para inserir o número de noites
80
  def input_nights_marriottvc(num_nights):
81
  find("//input[@id='numNights']").clear()
82
  find("//input[@id='numNights']").send_keys(num_nights)
 
83
 
84
 
85
  # Função para clicar no botão de pesquisa
86
  def click_search_marriottvc():
87
  find("//span[@class='search-carat']").click()
 
88
 
89
 
90
  # Função para verificar a disponibilidade
@@ -97,8 +104,8 @@ def check_availability_marriottvc(check_in_day, num_nights, month):
97
  find(
98
  '//*[@id="rtWebPanel"]/div/main/div[3]/form/div/div/div[2]/div[3]/div[2]/div[1]/button'
99
  ).click()
100
- except TimeoutException:
101
- logging.error("Elemento não encontrado dentro do tempo limite")
102
 
103
  while True:
104
  try:
@@ -112,7 +119,8 @@ def check_availability_marriottvc(check_in_day, num_nights, month):
112
  )
113
 
114
  return day.text, calendar.month_name[month]
115
- except:
 
116
  check_in_day = str(int(check_in_day) + 1)
117
  if int(check_in_day) > 31:
118
  month += 1
@@ -124,19 +132,19 @@ def check_availability_marriottvc(check_in_day, num_nights, month):
124
  find(
125
  '//*[@id="rtWebPanel"]/div/main/div[3]/form/div/div/div[2]/div[3]/div[2]/div[1]/button'
126
  ).click()
127
- except TimeoutException:
128
- logging.error(
129
- "Elemento não encontrado dentro do tempo limite")
130
-
131
 
132
  # Exemplo de uso
133
- login_marriottvc()
134
- open_bookvacation_marriottvc()
135
- input_destination_marriottvc('Marriott\'s Mountain Valley Lodge')
136
- input_guests_marriottvc('2')
137
- available_day, available_month = check_availability_marriottvc(
138
- 27, 4, 7) # Verifica a disponibilidade para 27 de Julho com 4 noites
139
-
140
- print(f"Dia disponível: {available_day} de {available_month}")
141
-
142
- driver.quit()
 
 
 
34
  driver.execute_cdp_cmd('Network.enable', {})
35
  except Exception as e:
36
  print(f"Erro ao iniciar o ChromeDriver: {e}")
37
+ raise
38
 
39
  # Função para encontrar um elemento usando o XPath
40
  def find(xpath):
 
48
  find("//input[@id='username']").send_keys(os.getenv('MARRIOTT_USERNAME'))
49
  find("//input[@id='password']").send_keys(os.getenv('MARRIOTT_PASSWORD'))
50
  find("//button[@type='submit']").click()
51
+ print("Login realizado com sucesso!")
52
 
53
 
54
  # Função para abrir a página de reserva de pontos
55
  def open_bookvacation_marriottvc():
56
  find("//a[contains(text(), 'USE POINTS')]").click()
57
  find("//li[contains(text(), 'Book Using Club Points')]").click()
58
+ print("Página de reserva de pontos aberta com sucesso!")
59
 
60
 
61
  # Função para inserir o destino
 
63
  destination_box = find("//input[contains(@placeholder, 'Destination')]")
64
  destination_box.send_keys(dest)
65
  find("//ul[@class='hotel']//li[1]").click()
66
+ print(f"Destino '{dest}' inserido com sucesso!")
67
 
68
 
69
  # Função para inserir o número de hóspedes
70
  def input_guests_marriottvc(num_guests):
71
  find("//input[@id='numGuests']").clear()
72
  find("//input[@id='numGuests']").send_keys(num_guests)
73
+ print(f"Número de hóspedes '{num_guests}' inserido com sucesso!")
74
 
75
 
76
  # Função para selecionar o mês desejado
77
  def input_month_marriottvc(month):
78
  find("//select[@id='searchbymonth']").click()
79
  print(calendar.month_name[month].lower())
80
+ find(f"//option[@id='id_{calendar.month_name[month].lower()}2024']").click()
81
+ print(f"Mês '{calendar.month_name[month]}' selecionado com sucesso!")
82
 
83
 
84
  # Função para inserir o número de noites
85
  def input_nights_marriottvc(num_nights):
86
  find("//input[@id='numNights']").clear()
87
  find("//input[@id='numNights']").send_keys(num_nights)
88
+ print(f"Número de noites '{num_nights}' inserido com sucesso!")
89
 
90
 
91
  # Função para clicar no botão de pesquisa
92
  def click_search_marriottvc():
93
  find("//span[@class='search-carat']").click()
94
+ print("Botão de pesquisa clicado com sucesso!")
95
 
96
 
97
  # Função para verificar a disponibilidade
 
104
  find(
105
  '//*[@id="rtWebPanel"]/div/main/div[3]/form/div/div/div[2]/div[3]/div[2]/div[1]/button'
106
  ).click()
107
+ except TimeoutException as e:
108
+ logging.error(f"Erro ao clicar no botão de pesquisa: {e}")
109
 
110
  while True:
111
  try:
 
119
  )
120
 
121
  return day.text, calendar.month_name[month]
122
+ except Exception as e:
123
+ logging.error(f"Erro ao verificar a disponibilidade: {e}")
124
  check_in_day = str(int(check_in_day) + 1)
125
  if int(check_in_day) > 31:
126
  month += 1
 
132
  find(
133
  '//*[@id="rtWebPanel"]/div/main/div[3]/form/div/div/div[2]/div[3]/div[2]/div[1]/button'
134
  ).click()
135
+ except TimeoutException as e:
136
+ logging.error(f"Erro ao clicar no botão de pesquisa: {e}")
 
 
137
 
138
  # Exemplo de uso
139
+ try:
140
+ login_marriottvc()
141
+ open_bookvacation_marriottvc()
142
+ input_destination_marriottvc('Marriott\'s Mountain Valley Lodge')
143
+ input_guests_marriottvc('2')
144
+ available_day, available_month = check_availability_marriottvc(
145
+ 27, 4, 7) # Verifica a disponibilidade para 27 de Julho com 4 noites
146
+
147
+ print(f"Dia disponível: {available_day} de {available_month}")
148
+ finally:
149
+ print("Driver encerrado com sucesso!")
150
+ driver.quit()