是否有可能在由硒打开的Chrome浏览器上弹出wx.message_dialog?

时间:2019-06-19 14:57:02

标签: python selenium selenium-webdriver wxpython wxpython-phoenix

我试图打开铬,然后要求用户关闭铬,所以我尝试使用wx进行操作,但是由于某些原因,我不知道使用硒时SetWindowStyle(wx.STAY_ON_TOP)无法正常工作。

我尝试使用以下标志创建wx.message_dialog:style = wx.STAY_ON_TOP 但它不起作用,所以我也尝试通过SetWindowStyle(wx.STAY_ON_TOP)更改窗口样式 但仍然无法正常工作

import wx
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, title = "ffffffff")
        self.options = Options()
        self.options.add_argument("--start-fullscreen")
        self.driver = None
        panel = wx.Panel(self)
        no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
        self.SetWindowStyle(no_resize)
        button = wx.Button(panel, -1, "Show MessageDialog", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.Show(True)


    def OnButton(self, event):

        self.driver = webdriver.Chrome(chrome_options=self.options, executable_path=r'chromedriver.exe')
        self.driver.get('http://127.0.0.1'+':5000')
        time.sleep(3)
        self.SetWindowStyle(wx.STAY_ON_TOP)
        stopBox = wx.MessageDialog(self , "do you want to stop","stop controling", style=wx.YES | wx.NO | wx.ICON_INFORMATION | wx.STAY_ON_TOP)
        stopBoxAns = stopBox.ShowModal()
        if stopBoxAns == 5103:
            stopBox.Destroy()
            no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
            self.SetWindowStyle(no_resize)
            return 1
        if stopBoxAns == 5104:
            stopBox.Destroy()
            no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
            self.SetWindowStyle(no_resize)
        return 2

if __name__ == "__main__":

    app = wx.App()
    MyFrame()
    app.MainLoop()

1 个答案:

答案 0 :(得分:0)

下面的代码在Linux上表现良好。
如前所述,STAY_ON_TOP发出警告,“当前仅在MSW和GTK下实现”,而您尚未说明操作系统是什么。

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, title = "ffffffff")
        panel = wx.Panel(self)
        self.no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
        self.SetWindowStyle(self.no_resize)
        button = wx.Button(panel, -1, "Show MessageDialog", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.Show(True)

    def OnButton(self, event):
        wx.LaunchDefaultBrowser('https://wxpython.org/')
        #self.SetWindowStyle(wx.STAY_ON_TOP)
        stopBox = wx.MessageDialog(self , "do you want to stop","stop controling", style=wx.YES | wx.NO | wx.ICON_INFORMATION | wx.STAY_ON_TOP)
        stopBoxAns = stopBox.ShowModal()
        ret_value = 0
        if stopBoxAns == wx.ID_YES:
            ret_value = 1
        if stopBoxAns == wx.ID_NO:
            ret_value = 2
        stopBox.Destroy()
        self.SetWindowStyle(self.no_resize)
        return ret_value

if __name__ == "__main__":

    app = wx.App()
    MyFrame()
    app.MainLoop()