【问题标题】:How to deal with google chrome confirmation alerts when using selenium in python?在 python 中使用 selenium 时如何处理谷歌浏览器确认警报?
【发布时间】:2020-10-07 11:03:49
【问题描述】:

我正在尝试制作一个可以打开我学校应用程序的网络自动化程序。 我们学校正在使用 Adob​​e Connect。 当我尝试打开已安装的应用程序时,它会给我一个确认警报。 这是不可检查的,也不能定义任何 XPath 或... 那么,我该如何处理呢? 我已经阅读了许多 Q\As,但我无法管理它。 这是我的代码:

from selenium import webdriver
import time

url = "http://78.157.45.27/eleven203/?OWASP_CSRFTOKEN=edd648edd5" \
      "e9bf51c3196210963bd5470d6c7af82e0ec636789dfafe5fc558dc&proto=true"
browser = webdriver.Chrome()
page = browser.get(url)
time.sleep(1)

my_user_name = "***"
my_password = "***"
time.sleep(1)

user_name = browser.find_element_by_id(id_="name")
password = browser.find_element_by_id(id_="pwd")
submit_button = browser.find_element_by_id(id_="login-button")
time.sleep(1)

user_name.click()
user_name.clear()
user_name.send_keys(my_user_name)

password.click()
password.clear()
password.send_keys(my_password)

submit_button.click()
time.sleep(5)

这是我从其他问题中测试但没有奏效的解决方案(附在上面代码的末尾):

ale = browser.switch_to.alert()
ale.accept()

错误信息:

selenium.common.exceptions.NoAlertPresentException: Message: no such alert

为了您的方便,我还添加了确认提醒。

【问题讨论】:

  • 您能否发布您收到的错误消息。另请查看 HTML 并查看“Open Adob​​e Connect”元素是否在 iframe 内。
  • @PeacefulJames 是的,错误信息就在那里。另外,我告诉过它是不可检查的。
  • 有趣...我建议您搜索有关执行任何可以关闭它的 JavaScript 代码或按 OK。可以在 selenium 中做到这一点。例如 driver.execute_script("document.getElementsByClassName('sample-class')[0].click()") 在此处查看 link
  • @IceBear 实际上我不想用 JS 来打扰自己 :) 但我会检查一下。无论如何,有没有完整的python方式?
  • @ManiFaridi ,这可能就是你要找的东西link

标签: python python-3.x selenium selenium-webdriver


【解决方案1】:

我不确定您是否可以将应用程序设置为在浏览器首选项中自动打开,但您始终可以截取“打开 Adob​​e Connect”按钮的截图,然后使用 pyautogui 找到它并单击它:

import pyautogui
button = pyautogui.locateCenterOnScreen('croppedScreenshot.png')
pyautogui.moveTo(button)
pyautogui.click()

我想 Pyautogui sendkeys 也可以工作。

【讨论】:

  • 哇,我刚看到你的回答。好主意。这个周末去试试。
【解决方案2】:

另一种更安全的方法是使用此package。 弹出警报后,您可以对您的应用程序进行编程,使其按 [Tab],然后按 [Enter] 以接受警报。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2017-07-10
    • 2011-10-07
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多