如何处理在 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,"","simptbrws000.w")" 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。
所以我有一个问题,我试图在没有 API 的应用程序上自动导入。
结果,我必须点击 30 次导航才能到达我想要的(夸张)。
但是,我试图基本上自动执行允许我上传特定文件的点击。
结果,我几乎到了我必须 select 我想要导入文件的特定测试版本的部分。我需要在一个字段中执行 send_keys
以找到我必须上传的正确导入版本。 Field 元素如下所示
<input class="lookupInput" type="text" name="brTestScoreImportLookupInput" id="brTestScoreImportLookupInput" style="width: 100px;" tabindex="1" onkeydown="return lookupKeyPressed(event,"","simptbrws000.w")" origvalue="" det="true" aria-labelledby="" autocomplete="off">
但是我认为我的代码没有正确处理 window,因为它从之前的 selection 中弹出。
我需要更新的字段可以在我上传的图片中找到:
//*[@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。