向警报写入一些文本

Writing some text to the alert

你能帮忙处理一下吗?

我想在提示警报中写一些文本。我使用了 switch_to.alert 和 send_keys 命令,但它不起作用。

   baseUrl = "https://www.seleniumeasy.com/test/javascript-alert-box-demo.html"
   driver = webdriver.Chrome()
   driver.maximize_window()
   driver.get(baseUrl)

   driver.find_element_by_xpath("//button[contains(text(),'Click for Prompt Box')]").click()
   alert1 = driver.switch_to.alert.send_keys("some text")
   alert1.accept()

我收到这个错误:

alert1.accept()

AttributeError: 'NoneType' 对象没有属性 'accept'

您可以尝试先获取警报,然后调用 send_keys 和接受方法。

alert1 = driver.browser.switch_to.alert
alert1.send_keys("some text")
alert1.accept()

如果您仍然遇到 NoneType 错误,可以添加一个明确的等待警报出现的时间。

 WebDriverWait(browser, 10).until(EC.alert_is_present(),
                               'Timed out waiting for PA creation ' +
                               'confirmation popup to appear.')

由于existing issues with Selenium as of this writing, the alert.send_keys is not working. Below is a workaround using PyAutoGUI

import time
import pyautogui

baseUrl = "https://www.seleniumeasy.com/test/javascript-alert-box-demo.html"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(baseUrl)
driver.find_element_by_xpath("//button[contains(text(),'Click for Prompt Box')]").click()
alert1 = driver.switch_to.alert
time.sleep(1)
pyautogui.typewrite('Hello world!')     
time.sleep(1)
alert1.accept()