如何处理在 Selenium Python 中出现的弹出窗口 Windows

How to Handle Popup Windows That Occur within Selenium Python

所以我有一个问题,我试图在没有 API 的应用程序上自动导入。 结果,我必须点击 30 次导航才能到达我想要的(夸张)。 但是,我试图基本上自动执行允许我上传特定文件的点击。 结果,我几乎到了我必须 select 我想要导入文件的特定测试版本的部分。我需要在一个字段中执行 send_keys 以找到我必须上传的正确导入版本。 Field 元素如下所示

<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">

但是我认为我的代码没有正确处理 window,因为它从之前的 selection 中弹出。 我需要更新的字段可以在我上传的图片中找到: 此外,该字段的 XPATH 是 //*[@id='brTestScoreImportLookupInput'] 您可以找到完整的代码 here。 主要方面是我必须在 File ID 字段中输入 TSI,然后在键盘上点击 enter 以填充我需要的正确导入实用程序。一旦我这样做,导入实用程序就会过滤掉,我需要 select 一个特定的 File ID.

应该控制它的主要代码:

# 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)

如果您想访问 link 脚趾存储库代码,请单击上面的此处。 任何帮助将不胜感激。

    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)

所以我能够通过使用以下方法同时使用 selenium 和 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)

基本上我不得不切换到那个弹出窗口 window。