J'ai donc un problème où j'essaie d'automatiser une importation sur une application qui n'a pas d'API. En conséquence, je dois faire comme 30 clics de navigation juste pour arriver à ce que je veux (Exagération). Cependant, j'essaie essentiellement d'automatiser les clics qui me permettront de télécharger un fichier spécifique. En conséquence, j'arrive presque à la partie où je dois sélectionner la version de test spécifique avec laquelle je veux importer le fichier. Il y a un champ dans lequel je dois effectuer un send_keys pour trouver la version d'importation correcte que je dois télécharger. L'élément Field ressemble à ceci

<input class="lookupInput" type="text" name="brTestScoreImportLookupInput" id="brTestScoreImportLookupInput" style="width: 100px;" tabindex="1" onkeydown="return lookupKeyPressed(event,&quot;&quot;,&quot;simptbrws000.w&quot;)" origvalue="" det="true" aria-labelledby="" autocomplete="off">

Cependant, je ne pense pas que mon code gère correctement la fenêtre lorsqu'elle apparaît à partir de la sélection précédente. Le champ que je dois mettre à jour se trouve dans l'image que j'ai téléchargée : entrez la description de l'image ici De plus, le XPATH pour le champ est //*[@id='brTestScoreImportLookupInput'] Vous pouvez trouver le code complet ici. L'aspect principal est que je dois entrer TSI dans ce champ File ID, puis appuyer sur enter sur mon clavier pour remplir le bon utilitaire d'importation dont j'ai besoin. Une fois que je fais cela, les utilitaires d'importation filtrent et je dois sélectionner un File ID spécifique : entrez la description de l'image ici.

Le code principal qui devrait contrôler ceci :

# Click on Test Score Import Wizard - TW
# Test Wizard XPATH = //a[@id='tree1-3-link']/span
element = WebDriverWait(browser, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//a[@id='tree1-3-link']/span")))
element.click();

# Send test_upload and Send Keys
# Field XPATH = //*[@id='brTestScoreImportLookupInput']
test_lookup = browser.find_element_by_id("brTestScoreImportLookupInput")
test_lookup.send_keys(test_upload)

Si vous souhaitez visiter le code du référentiel link toe, cliquez ici au-dessus. Toute aide serait grandement appréciée.

    Traceback (most recent call last): File ".\skyward_collegeboard_TSI_import.py", line 115, in
    <module> test_lookup = browser.find_element_by_id("brTestScoreImportLookupInput") File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id return self.find_element(by=By.ID, value=id_) File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py",
      line 976, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py",
      line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="brTestScoreImportLookupInput"]"}
      (Session info: chrome=80.0.3987.122)
2
R. Barrett 25 févr. 2020 à 22:19

1 réponse

Meilleure réponse

J'ai donc pu accomplir cela en utilisant la méthode suivante en utilisant à la fois du sélénium et du pynput.

# Browser Switches to Window
WebDriverWait(browser,10).until(EC.number_of_windows_to_be(2))
browser.switch_to.window(browser.window_handles[-1])

# Send test_upload and oend Keys
# Field XPATH = //*[@id='brTestScoreImportLookupInput']
test_lookup = browser.find_element_by_id("brTestScoreImportLookupInput")
test_lookup.send_keys(test_upload)

# Press and Release Enter Key
keyboard.press(Key.enter)
keyboard.release(Key.enter)

Essentiellement, j'ai dû passer à cette fenêtre contextuelle.

1
R. Barrett 25 févr. 2020 à 21:35