python Selenium未发送密钥以发出警报

dzhpxtsq  于 2023-10-14  发布在  Python
关注(0)|答案(1)|浏览(114)

这是一个网站,有一个PIN码列表,只有一个是正确的。要检查PIN码,有一个检查按钮。我需要按下检查按钮,然后粘贴引脚提醒和接受,然后根据我需要做其他事情的消息。
问题是当我尝试使用send_keys()方法时,程序崩溃并出现以下错误:

  1. selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: {Alert text :
  2. Message: unexpected alert open: {Alert text : }

我试过添加time.sleep()execute_scriptjs代码来传递一个pin,但仍然有崩溃。
如果我删除send_keys()方法程序工作正常,但因为我把它添加回来,它不是。
下面是我的代码:

  1. import time
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
  4. with webdriver.Chrome() as browser:
  5. browser.get('https://parsinger.ru/blank/modal/4/index.html')
  6. codes = browser.find_elements(By.CLASS_NAME, 'pin')
  7. btn = browser.find_element(By.ID, 'check')
  8. res = browser.find_element(By.ID, 'result')
  9. for code in codes:
  10. btn.click()
  11. alert = browser.switch_to.alert
  12. alert.send_keys(code.text)
  13. alert.accept()
  14. if res.text != 'Неверный пин-код':
  15. print(f'Правильный код: {code.text} ')
  16. print(f'Секретный код: {res.text}')
s71maibg

s71maibg1#

**问题的根本原因:**您首先点击警报,当警报打开时,您试图访问主页上的Web元素并试图获取其文本。在此代码中,alert.send_keys(code.text)
**解决方法:**在点击alert按钮之前,先获取<span>元素的文本。只需要像下面这样修改for循环:请注意,在单击警报按钮之前,我正在捕获元素的文本。

  1. for code in codes:
  2. pin = code.text
  3. btn.click()
  4. alert = browser.switch_to.alert
  5. alert.send_keys(pin)
  6. alert.accept()

结果:

  1. Правильный код: 1000
  2. Секретный код: 1261851212132345456274632
  3. Process finished with exit code 0

相关问题