Selenium webdriver 点击警报

paw*_*lty 2 python web-scraping python-3.x selenium-webdriver

我正在尝试抓取这个网站http://bombayhighcourt.nic.in/party_query.php。一切顺利,直到我第一次抓取结果并返回此页面。然后出现以下警报:在此处输入图片说明

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

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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

        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")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

And*_*son 7

这一行有错误

alert = s.mydriver.switch_to.alert()
Run Code Online (Sandbox Code Playgroud)

它应该看起来像

alert = s.mydriver.switch_to.alert
Run Code Online (Sandbox Code Playgroud)

或者

alert = s.mydriver.switch_to_alert()
Run Code Online (Sandbox Code Playgroud)

你也做同样的动作两次(EC.alert_is_present()允许切换到警报以及driver.switch_to.alert)。你可以简单地使用

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