Python-Selenium无法处理警报

时间:2018-07-12 19:35:25

标签: python selenium internet-explorer selenium-webdriver

我正在尝试在一个非常老的仅IE网页上自动化一个过程,并在某一时刻发出警报。

我无法使用IE进行检查(或不知道如何操作),但是只有一个“接受”按钮(实际上是图像),并且警报文本无法复制(不确定原因)。

我正在将硒与IE驱动程序配合使用,因此无法摆脱这一警报。

硒正在检测警报,但是当我检查警报内容时,我什么也没收到。 我尝试使用

接受警报
alert_obj = self.br.switch_to.alert
alert_obj.accept()

还有

.dismiss();
.send_key(Keys.ENTER)

和其他一些东西。我想念什么吗?

警报照片:

enter image description here

4 个答案:

答案 0 :(得分:0)

警报是包含文本和“确定”按钮的常规对话框。如果您的警报具有图像作为按钮,则它不是警报,而是其他。我不知道这是什么,但没有警报。

这是一个警报:

ALERT DIALOG IN INTERNET EXPLORER

答案 1 :(得分:0)

如果此弹出窗口为警报,则可以在初始化驱动程序本身时对其进行处理。下面是为此的C#代码:

InternetExplorerOptions options = new InternetExplorerOptions
{               
   UnhandledPromptBehavior = UnhandledPromptBehavior.Accept,                   
};                                
driver = new InternetExplorerDriver(options);

以上代码应处理警报。如果不是,请在创建驱动程序实例之前尝试添加此代码。

 options.AddAdditionalCapability("browserstack.ie.enablePopups", "accept");

答案 2 :(得分:0)

此问题可能与以下内容重复:

How to close yet another chrome popup using python selenium

对主持人:我试图将此问题标记为Duplicate,但是随后,当我在搜索栏中键入“如何使用python硒关闭另一个Chrome弹出窗口”时,没有找到结果。

答案 3 :(得分:0)

我设法做到了。

我尝试了所有的一切,但一切都是马车。我什至不得不使用这个怪异的循环,因为仅使用time.sleep()调用就使事情变得很麻烦。我真的不知道发生了什么有时在进入页面时会出现弹出句柄,有时不会出现。有时在错误的地方。有时无法正常关闭。我尝试了一堆不同的方法,这种方法似乎有效:

这就是我所做的:

    #Saves ID from original window
    janelaOriginal = self.br.current_window_handle
    #Go to the website
    self.br.get(url)

    #waits 2.5 seconds for the pop-up (time.sleep bugs)
    i = 0
    while(i < 25):
        i += 1
        time.sleep(0.1)
        #is pop-up open?:
        if(len(self.br.window_handles)>1):
            #handle sometimes appears in the wrong place so this is necessary:
            if(janelaOriginal==self.br.window_handles[0]):
                self.br.switch_to_window(self.br.window_handles[1])
            else:
                self.br.switch_to_window(self.br.window_handles[0])
            #close the pop-up and go back to the original window
            self.br.close()
            self.br.switch_to_window(janelaOriginal)
            #do stuff
            return
    #do other stuff