我正在尝试在一个非常老的仅IE网页上自动化一个过程,并在某一时刻发出警报。
我无法使用IE进行检查(或不知道如何操作),但是只有一个“接受”按钮(实际上是图像),并且警报文本无法复制(不确定原因)。
我正在将硒与IE驱动程序配合使用,因此无法摆脱这一警报。
硒正在检测警报,但是当我检查警报内容时,我什么也没收到。 我尝试使用
接受警报alert_obj = self.br.switch_to.alert
alert_obj.accept()
还有
.dismiss();
.send_key(Keys.ENTER)
和其他一些东西。我想念什么吗?
警报照片:
答案 0 :(得分:0)
答案 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