Selenium Webdriver单击警报 [英] Selenium webdriver click alert

查看:108
本文介绍了Selenium Webdriver单击警报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试抓取此网站

I am trying to scrape this website

我看到负责警报的代码是这样的:

I can see that the code responsible for the alert is this:

function validate()
{
  with(document.pqueryfrm)
  {
    if(trim(m_party.value)=="")
    {
      alert("Enter Party Name");
      m_party.focus();
      return false;
    }
    if(m_party.value=="")
    {
      alert("Enter Party Name");
      m_party.focus();
      return false;
    }
  }
}

我正在尝试使用此代码在此警报中单击确定",但它没有执行任何操作:

I am trying to click OK in this alert with this code but it doesn't do anything:

        try:
            WebDriverWait(s.mydriver, 3).until(EC.alert_is_present(),"Enter Party Name" )
            alert = s.mydriver.switch_to.alert()
            alert.accept()
            print("alert accepted")
        except TimeoutException:
            print ("no alert")

我收到以下错误消息:

UnexpectedAlertPresentException: Alert Text: None
Message: unexpected alert open: {Alert text : Enter Party Name}
  (Session info: chrome=55.0.2883.87)
  (Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)

我在做什么错了?

推荐答案

此行有错误

alert = s.mydriver.switch_to.alert()

应该看起来像

alert = s.mydriver.switch_to.alert

alert = s.mydriver.switch_to_alert()

您还要执行两次相同的操作(EC.alert_is_present()driver.switch_to.alert都可以切换为警报).您可以简单地使用

Also you make same actions twice (EC.alert_is_present() allow to switch to alert as well as driver.switch_to.alert). You can simply use

alert = WebDriverWait(s.mydriver, 3).until(EC.alert_is_present(),"Enter Party Name" )
alert.accept()
print("alert accepted")

这篇关于Selenium Webdriver单击警报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆