Ich werde versuchen, mein Problem zu vereinfachen. Ich schreibe ein Testprogramm mit py.test und appium. Jetzt:Python Wie vermeidet man viele if-Anweisungen
In der Anwendung habe ich 4 Medienformate: Video, Audio, Bild und Dokument. Ich habe eine Steuerschnittstelle mit vorherigen, nächsten, Play, Stop-Tasten. Jede Medienformate hat eine eindeutige ID wie
video_playbutton, audio_playbutton, document_playbutton, image_playbutton, video_stopbutton audio_stopbutton ... etc etc.
Aber die Operation ich tun muss, ist das gleiche für alle von ihnen zB Presse auf playbutton.
kann ich playbutton jede Adresse, wenn ich sie wie diese
find_element_by_id("video_playbutton")
ausdrücklich geben Und wenn ich möchte auf andere playbuttons ich über die Linie jedes Mal zu wiederholen, habe drücken. Wie folgt aus:
find_element_by_id("video_playbutton")
find_element_by_id("audio_playbutton")
find_element_by_id("image_playbutton")
find_element_by_id("document_playbutton")
Und weil ich diese Funktion von einem anderen Skript aufrufen würde ich unterscheiden erste welche Saite, die ich beispiel bekam:
def play(mediatype):
if mediatype == "video"
el = find_element_by_id("video_playbutton")
el.click()
if mediatype == "audio"
el = find_element_by_id("audio_playbutton")
el.click()
if .....
Was ist der beste Weg, um diese Situation zu lösen? Ich möchte Hunderte von if-Anweisungen vermeiden, da es auch Stop-, Next-, vorherige usw. Buttons gibt.
Ich suche eher nach so etwas wie dieses
def play(mediatype)
find_element_by_id(mediatype.playbutton)
Haben Sie etwas wie 'el = find_element_by_id (mediatype +" _ playbutton "); ...; el.click() '? In "..." würden Sie natürlich überprüfen wollen, ob Sie tatsächlich etwas gefunden haben. –
Entschuldigung sollte das erwähnen. Das Problem ist, dass die IDs nicht sehr genau sind. Ich werde ein echtes Beispiel geben: Video playbutton wird "imgPlayPause" genannt, während playback button heißt "imgPlayPause_mif" aber dann play playbutton heißt "docPlay_mif" –
OK, aber wenn Sie diese Dinge im Voraus wissen, könnten Sie noch ein dict() auffüllen an einer Stelle, z. B. 'ids = dict(); ids ['video'] = 'video_playbutton'; ids ['audio'] = 'audio_playbutton'; ...; 'und dann später' el = find_element_by_id [ids [mediatype]]; ...; el.click() '. Dann ist der Lookup-Code einfach und der einzige langweilige Teil ist das Generieren dieses Mappings. Dieses Mapping muss irgendwo existieren, und es ist wahrscheinlich viel flexibler, es als Mapping zu halten als als eine Menge von if/elif/else-Statements. –