Tag: google chrome

OpenQA.Selenium.WebDriverException:未知错误:Chrome无法启动:在Linux上通过Selenium执行测试时exception退出

我创建了一个使用Selenium的应用程序,使用.NetCore在Linux上使用它,实际上这是我的代码实现: public class Program { public static async Task Main(string[] args) { //Settings for chrome var chromeOpts = new ChromeOptions(); chromeOpts.AddArgument(“headless”); chromeOpts.AddArgument(“no-sandbox”); //Get assembly path where chrome driver is located string codeBase = Assembly.GetExecutingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); path = Path.GetDirectoryName(path); var driver = new ChromeDriver(path, chromeOpts, TimeSpan.FromSeconds(180)); } } […]

使用C#仅关闭Google Chrome隐身窗口

我想创建一个小程序来关闭谷歌incogneto窗口。 我有代码杀死所有镀铬窗口,但我不知道如何隔离隐身窗口 现有代码: Process[] proc = Process.GetProcessesByName(“MyApp”); foreach (Process prs in proc) { prs.Kill(); }

流式video(使用FFmpeg AutoGen的C#)发送多个数据请求

我写了一个video生成器,以h264格式(mp4)对video进行修改。 当我从我的azure服务流式传输video时,我看到以下网络流量: 我正在使用的AVCodecContext布局如下: AVCodec* videoCodec = ffmpeg.avcodec_find_encoder(AVCodecID.AV_CODEC_ID_H264) AVCodecContext* videoCodecContext = ffmpeg.avcodec_alloc_context3(videoCodec); videoCodecContext->bit_rate = 400000; videoCodecContext->width = 1280; videoCodecContext->height = 720; videoCodecContext->gop_size = 12; videoCodecContext->max_b_frames = 1; videoCodecContext->pix_fmt = videoCodec->pix_fmts[0]; videoCodecContext->codec_id = videoCodec->id; videoCodecContext->codec_type = videoCodec->type; videoCodecContext->time_base = new AVRational { num = 1, den = 30 }; ffmpeg.av_opt_set(videoCodecContext->priv_data, “preset”, “ultrafast”); 我也尝试通过AVDictionary为avformat_write_header()设置“movflags”选项,但是av_write_trailer()返回-2,导致文件没有完成写入。 我无法弄清楚如何解决这个问题。 使用Windows Movie Maker流生成的video完美无缺。 […]

Selenium ChromeDriver – 在后台运行,但不是无头

我正在寻找一种在后台使用chrome驱动程序运行selenium测试的方法。 我的意思是背景,而不是前景聚焦窗口。 我实际上可以这样做,但是只要在Chrome驱动程序中发生打开新选项卡或在窗口之间切换(因此基本上切换窗口句柄)等操作,浏览器窗口就会被推到前台。 所以我的问题是,如果不运行测试无头,我怎样才能防止这种情况发生? 任何建议表示赞赏,可供讨论。 编辑 作为一个有点暂时的解决方案,我想出了以下内容。 使用Windows 10虚拟桌面function,我在一个单独的虚拟桌面上运行测试,从而运行Chrome浏览器窗口。 然后我切换回主虚拟桌面继续执行其他任务。 这可以防止Chrome浏览器窗口被强制到前台。 请注意,当出现上述任何操作时,这仍然会在任务栏中显示闪烁的chrome图标。 仍在寻找更加可靠的解决方案,因此任何建议仍然存在。 为了有希望打开新的观点和讨论点,最终解决方案,我将提供一些更详细的信息,说明我的代码在做什么。 我有5个镀铬网络驱动程序,每个这些网络驱动程序包含6个选项卡(WindowHandles)。 这个想法是必须在每个选项卡上连续重复某个过程。 因此,我们遍历每个webdriver,并在每个选项卡上的webdriver中,并将此选项卡设置为webdrivers当前的WindowHandle。 这使得chrome窗口可以明显切换到指定的选项卡。 在切换发生之后,对标签的内容进行基本的selenium自动化,之后我们重复整个过程。 实际问题似乎发生在chrome webdriver切换到新选项卡(WindowHandle)时,此时包含选项卡的chrome窗口被推到前台并窃取焦点。 请注意,这并不总是发生,通常它可以毫无问题地切换标签。 因此不清楚还有另一个因素会导致窗户偷走焦点。 编辑2 执行以下操作后: 我重载了selenium方法,该方法用于在标签(WindowHandles)之间切换,并且每次都调用SetWindoPos。 不幸的是,这也没有解决这个问题。 我将尝试更深入地了解可能导致此问题的原因,并将报告回来。 – S. Van den Wyngaert 我在运行测试时出去了几个小时,回过头来看,令人惊讶的是我还在我的主虚拟桌面上(win10function)。 这意味着在我离开期间没有发生这个问题。 我再次开始工作,打开了一个镀铬窗口,注意到我做完这个后不久,焦点被一个镀铬驱动器的窗口再次偷走了。 我从中得出的结论是,只有在打开另一个chrome窗口(未通过代码中的chrome驱动程序打开)时才会出现此问题。 我将继续调查,并将报告更新。 在调查此行为几个小时之后,我注意到当另一个镀铬窗口打开时,只要它具有焦点,就不会发生问题。 所以要快速总结一下: 在以下情况下不会发生此问题: 没有其他镀铬窗(不是selenium驱动)打开或最小化 另一个镀铬窗口(不是selenium驱动)打开并具有焦点 另一个运行全屏模式的应用程序有焦点 问题确实发生在: 另一个镀铬窗口(不是selenium驱动)打开,没有焦点 请注意,当我谈到另一个镀铬窗口时,我特别指的是不是由selenium驱动的镀铬窗口,因此用户打开了常规的镀铬窗口。

ChromeDriver用户首选项已被忽略

我正在使用Selenium webdriver 3.3和ChromeDriver 2.28(32位)。 我的奴隶机是运行Chrome 57的Windows 7。 当Chrome启动时,我尝试使用通过RemoteWebDriver的ChromeOptions来使用参数“password_manager_enabled”禁用“保存密码”弹出窗口。 但是,它似乎根本没有效果。 我尝试过很多关于ChromeOptions,JSON字符串和简单字符串的变体,但都无济于事。 ChromeOptions cOpt = new ChromeOptions(); cOpt.addUserProfilePreference(“profile.password_manager_enabled”, false); var capabilities = chromeOpts.ToCapabilities() as DesiredCapabilities; // Add OS, Platform capabilities etc string gridConnectionURL = “xxxx” driver = new CustomRemoteDriver(new Uri(gridConnectionURL), capabilities, new TimeSpan(0, 5, 0)); 有没有人知道设置此首选项的“正确”方法,以便它可以工作?

使用Selenium Webdriver和Windows身份validation(在Chrome中)C#/ ASP.Net

Google放弃了通过URL传递Windows凭据的支持,这为我打破了很多自动化。 (用户名:password@www.url.com) https://www.chromestatus.com/feature/5669008342777856 我发现有一个使用AutoItX dll的解决方案我添加了它并且在本地运行时工作正常,但是当部署到Web服务器时它不会发送击键。 这就是我所拥有的。 AutoItX.WinWaitActive(authenticateurl + ” – Google Chrome”, “”, 10); AutoItX.WinActivate(authenticateurl + ” – Google Chrome”); AutoItX.Send(AdminUsername + “{TAB}”); AutoItX.Send(AdminUserpass + “{ENTER}”); 知道为什么AutoItX在部署时不起作用? 是否有更好的替代方法可以在Chrome浏览器中传递Windows凭据? 先感谢您!

尝试从chrome实现拖放gmail附件

我一直在尝试将chrome中的gmail附件拖放到我的应用程序中。 可以将文件从电子邮件拖到桌面,然后在那里创建附件,所以我知道这一定是可能的。 我已经能够让它读取文件名,但是当我从数据对象中读取FileContents时,我得到一个带有文件链接的Internet快捷方式。 有人有过这个工作吗? 目前的代码是.txt文件的硬编码 示例项目可以从以下位置下载: https://www.dropbox.com/s/jz4zde0mvgxzn1g/DragDropTest.zip?dl=0 我的主要DataObjectWrapper类如下: 发布所有内容的字符太多但主要方法是: public object GetDataNative(string format, bool autoConvert) { switch (format) { case CFSTR_FILEDESCRIPTOR_A: IntPtr fileGroupDescriptorAPointer = IntPtr.Zero; try { //use the underlying IDataObject to get the FileGroupDescriptor as a MemoryStream MemoryStream fileGroupDescriptorStream = (MemoryStream)this.underlyingDataObject.GetData(CFSTR_FILEDESCRIPTOR_A, autoConvert); byte[] fileGroupDescriptorBytes = new byte[fileGroupDescriptorStream.Length]; fileGroupDescriptorStream.Read(fileGroupDescriptorBytes, 0, fileGroupDescriptorBytes.Length); fileGroupDescriptorStream.Close(); //copy the file […]

如何检查浏览器是否打开

如何检查浏览器是否打开? 我知道我可以检查一个进程,但有时进程正在运行,但在计算机浏览器上仍在启动。 我只需要2个浏览器,Chrome和Firefox。

在C#中使用谷歌“现在说话”

最近谷歌在Chrome浏览器中宣布了一项function,即使用麦克风搜索文本或翻译文本。 http://www.seroundtable.com/google-search-speak-now-13346.html 我想开发一个C#桌面应用程序来向谷歌发送语音并获得结果。 怎么做到呢?

在本地获取Chrome和Firefox版本,C#

我只是使用常规的C#而不是ASP.NET。 我想知道我是否可以获得Chrome和Firefox的版本。 我知道IE可以通过注册表获得版本。 据我所知,Chrome和Firefox不会将这些信息存储在注册表中。 提前致谢。