ich will für meine Arbeitskollegen ein Programm erstellen, welches hilft die Flieger einer bestimmten Airline automatisch "aufzusetzen"
Jedoch gibt es 2 Verschiene Arten von Flieger.
1) Flieger wo die Max Werte nicht gespeicht sind "LNA Flieger"
2) Flieger wo die Max Werte fix ins System gespeichert sind
Ich habe im Hintergrund eine .xlsm weil ein automatischer Löschknopf als Makro hinterlegt ist.
Grundsätzlich nimmt er sich dort von den Spalten folgende Daten
A: Flugnummer
C:Flugzeug Type (airbus/boeing)
E:Passagiere (schätzung)
bei den LNA Fliegern müssen die Werte von den Fliegern Manuell hinzugefügt werden deswegen hab ich eine If abfrage gemacht die schaut ob ein bestimmtes "feld" angezeigt wird
Dies Klappt auch sehr gut. Das Programm geht alle reiter dieser Web App... durch und tragt alle Felder mit einen Standart Wert aus und gibt diesen anschließend wieder ins "archiv" retour.
Jedoch bei nicht LNA Fliegern kommt ein sogenanntes Remark Pop Up wo man gewissen informationen sehen kann (bei diesen Fliegern jedoch immer leer)
wenn ich jetzt mit
Code: Alles auswählen
if driver.find_element_by_xpath("//*[@id='remarksInfoDlg_container']").is_displayed():
driver.find_element_by_xpath("//*[@id='remarksInfoDlg']/div[1]/div[1]").click()
Kein Fehler nichts das Programm schließt sich einfach nach einer Zeit.
Meine Überlegung war ob ich einfach eine if not abfrage machen soll und dann den code darunter auszuführen.
was ich morgen in der Arbeit testen werde, da ich auf den link leider nur im geschlossenen netzwerk zugriff habe.
mit dem jetztigen code funktionieren nur LNA Flieger bei keine LNA flieger kommen eben diese Pop Up Msg welche ich zwar wegklicken kann aber dann eben nichts mehr weiter macht.
Code: Alles auswählen
# Mach2WB Flieger aufsetzen
# Autor Jellitsch M 97247
# import sys
import openpyxl
import time
from selenium import webdriver
# from selenium.common.exceptions import TimeoutException
# from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
def login_credentials():
print("----- Mach2WB Flieger aufsetzen -----\n")
username = input("--- Username: ")
if username == "xx":
quit(0)
password = input("--- Passwort: ")
if username == "1" and password == "1":
username = "###"
password = "###"
datum = input("--- Datum (zB:08.12.2021): ")
return username, password, datum
def einloggen_webpage(username, password):
print("----- Einloggen in Mach2WB -----")
driver_pfad = "chromedriver.exe"
mach2wb_link = "##########"
driver = webdriver.Chrome(driver_pfad)
driver.get(mach2wb_link)
driver.implicitly_wait(50)
print("----- " + driver.title + " -----")
time.sleep(0.3)
driver.find_element_by_id("firstElement").send_keys(username)
driver.find_element_by_id("josso_password").send_keys(password)
driver.find_element_by_id("login-button").click()
if ec.visibility_of_element_located((By.XPATH, "//*[@id='content']/div[2]/table/tbody/tr[2]/td/form/input[1]")):
time.sleep(0.3)
driver.find_element_by_xpath("//*[@id='content']/div[2]/table/tbody/tr[2]/td/form/input[1]").click()
return driver
def aufsetzen(driver, datum):
driver.find_element_by_xpath("//*[@id='ui-id-2']").click()
driver.find_element_by_xpath("//*[@id='ui-id-16']").click()
driver.find_element_by_id("btnSave").click()
driver.find_element_by_id("searchFlights").click()
print("----- Vorlage wird geladen -----")
workbook = openpyxl.load_workbook("FR_einspielen.xlsm")
tabelle = workbook["Tabelle1"]
rows = tabelle.max_row
print("----- ", rows, " Anzahl der Flüge -------")
for r in range(1, rows + 1):
flugnummer = tabelle.cell(row=r, column=1).value
ac_type = tabelle.cell(row=r, column=3).value
pax = tabelle.cell(row=r, column=5).value
flg = driver.find_element_by_xpath("//*[@id='searchFlightsTab']/form/div[3]/table/tbody/tr[1]/td[3]/input")
flg.click()
flg.send_keys(flugnummer)
input_date = driver.find_element_by_id("dateFrom")
input_date.click()
input_date.send_keys(Keys.CONTROL + "a")
input_date.send_keys(Keys.DELETE)
input_date.send_keys(datum)
driver.find_element_by_id("submitSearch").click()
rausholen = driver.find_element_by_xpath("//*[@id='data']/tbody[2]/tr/td[7]/a/img")
rausholen.click()
driver.switch_to_alert().accept()
if ec.visibility_of_element_located((By.XPATH, "//*[@id='content']/form/div/div[1]")):
if ac_type == "A320":
lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
lna_conf.send_keys("Y180")
lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
lna_class.send_keys("Y")
lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
lna_seats.send_keys("180")
lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
lna_dow.send_keys("42000")
lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
lna_mzfw.send_keys("60000")
lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
lna_tow.send_keys("75000")
lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
lna_law.send_keys("66000")
comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
comp1.send_keys("1")
comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
comp3.send_keys("3")
comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
comp4.send_keys("4")
comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
comp5.send_keys("5")
comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
comp1max.send_keys("99999")
comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
comp3max.send_keys("99999")
comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
comp4max.send_keys("99999")
comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
comp5max.send_keys("99999")
save = driver.find_element_by_xpath("//*[@id='btnApply']")
save.click()
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
elif ac_type == "W38":
lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
lna_conf.send_keys("Y189")
lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
lna_class.send_keys("Y")
lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
lna_seats.send_keys("189")
lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
lna_dow.send_keys("42000")
lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
lna_mzfw.send_keys("60000")
lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
lna_tow.send_keys("75000")
lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
lna_law.send_keys("66000")
comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
comp1.send_keys("1")
comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
comp3.send_keys("2")
comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
comp4.send_keys("3")
comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
comp5.send_keys("4")
comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
comp1max.send_keys("99999")
comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
comp3max.send_keys("99999")
comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
comp4max.send_keys("99999")
comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
comp5max.send_keys("99999")
save = driver.find_element_by_xpath("//*[@id='btnApply']")
save.click()
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
if driver.find_element_by_xpath("//*[@id='remarksInfoDlg_container']").is_displayed():
driver.find_element_by_xpath("//*[@id='remarksInfoDlg']/div[1]/div[1]").click()
# COR
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[4]/a").click()
driver.find_element_by_xpath(
"//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[3]/td[1]/input[1]").click()
driver.find_element_by_xpath(
"//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[6]/td[1]/input[1]").click()
driver.find_element_by_xpath(
"//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[9]/td[1]/input[1]").click()
driver.find_element_by_xpath("//*[@id='btnSubmit']").click()
# F&C
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[5]/a").click()
driver.find_element_by_name("crewCockpit").send_keys("2")
driver.find_element_by_name("crewCabin").send_keys("4")
driver.find_element_by_name("flightTimeEstimatedString").send_keys("0130")
driver.find_element_by_name("airlinePhoneNumber").send_keys("28291")
driver.find_element_by_name("taxiFuel").send_keys("1")
driver.find_element_by_name("tripFuel").send_keys("2")
driver.find_element_by_name("takeoffFuel").send_keys("3")
driver.find_element_by_xpath("//*[@id='btnApply']").click()
# PAX
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[6]/a").click()
driver.find_element_by_xpath(
"//*[@id='loaddata']/tbody/tr[1]/td/table[2]/tbody/tr[3]/td[2]/input").send_keys(pax)
driver.find_element_by_xpath("//*[@id='btnApply']").click()
# C&M
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[7]/a").click()
driver.find_element_by_name("loadFigureList[0].mailWeight").send_keys("0")
driver.find_element_by_name("loadFigureList[0].mailPieces").send_keys("0")
driver.find_element_by_name("loadFigureList[0].cargoWeight").send_keys("0")
driver.find_element_by_name("loadFigureList[0].cargoPieces").send_keys("0")
notoc = driver.find_element_by_xpath("//*[@id='loaddata']/tbody/tr[1]/td[2]/table[1]/tbody/tr[2]/td[2]/select")
notoc.click()
notoc_auswahl = Select(notoc)
notoc_auswahl.select_by_visible_text("not created")
driver.find_element_by_xpath("//*[@id='btnApply']").click()
# Dist
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[8]/a").click()
driver.find_element_by_name("destBulkList[0].row[2].baggageWithCode").send_keys("r")
driver.find_element_by_xpath("//*[@id='bulkContainersForm']/div/div[5]/button[1]").click()
# Placeback
driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
driver.find_element_by_id("btnPlaceBack").click()
driver.find_element_by_id("searchFlights").click()
print("----- ", r, ".", flugnummer, " wurde mit", pax, "aufgesetzt! -----")
flg = driver.find_element_by_xpath("//*[@id='searchFlightsTab']/form/div[3]/table/tbody/tr[1]/td[3]/input")
flg.click()
flg.send_keys(Keys.CONTROL + "a")
flg.send_keys(Keys.DELETE)
print("----- Eingabe wurde gelöscht! -----")
def main():
username, password, datum = login_credentials()
driver = einloggen_webpage(username, password)
aufsetzen(driver, datum)
return
if __name__ == "__main__":
main()