CefSharp GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name,
CefSharp GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name,
我插入了 selenium 和 CefSharp 一起工作,但是我收到了奇怪的错误记录...
[0217/000149:ERROR:gles2_cmd_decoder.cc(13988)] [.Compositor-000001C8F5CE0570]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[0217/000149:ERROR:gles2_cmd_decoder.cc(7639)] [.Compositor-000001C8F5CE0570]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
[0217/001125:WARNING:dns_config_service_win.cc(673)] Failed to read DnsConfig.
[0217/003937:WARNING:raw_channel_win.cc(532)] WriteFile: The pipe is being closed. (0xE8)
[0217/003937:WARNING:proxy_message_pipe_endpoint.cc(50)] Failed to write enqueue message to channel
代码如下(Atm 应用更多的是为了调试而不是为了它的原始目的):
using System;
using System.Linq;
using System.Windows.Forms;
using CefSharp.WinForms;
using OpenQA.Selenium.Chrome;
using System.Threading;
using System.IO;
using OpenQA.Selenium;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ChromiumWebBrowser _browser;
private void button1_Click(object sender, EventArgs e)
{
_browser = new ChromiumWebBrowser("https://www.google.com/gmail/about/")
{
Dock = DockStyle.Fill,
};
Thread.Sleep(1000);
var options = new ChromeOptions { BinaryLocation = Path.Combine(System.IO.Directory.GetCurrentDirectory().Split(new[] { "bin" }, StringSplitOptions.None)[0], @"support\cef_binary_3.2556.1368.g535c4fb_windows64_client\Release\cefclient.exe") };
// options.AddArgument("no-sandbox");
var cefDriver = new ChromeDriver(options);
cefDriver.Navigate().GoToUrl("https://www.google.com/gmail/about/"); //Somewhere here error is raised that then writes a log file and pops up alert that derails whole application
Thread.Sleep(1000);
if (isAlertPresent(cefDriver)) {
// cefDriver.SwitchTo().Alert().Accept(); //This fails to close opened error dialog
}
}
public bool isAlertPresent(ChromeDriver driver)
{
try
{
driver.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException Ex)
{
return false;
}
}
}
}
我相信它与 UI 线程上的阻塞有关..
下面的代码工作正常。
using OpenQA.Selenium.Chrome;
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e)
{
var username = textBox1.Text;
var password = textBox2.Text;
if (new[] { username, password }.Any(o => string.IsNullOrWhiteSpace(o)))
{
label3.Text = "One of'em boxes is empty";
return;
}
await PassLogin(username, password);
}
async Task PassLogin(string username, string password)
{
await Task<ChromeDriver>.Factory.StartNew(() =>
{
var options = new ChromeOptions { BinaryLocation = Path.Combine(System.IO.Directory.GetCurrentDirectory().Split(new[] { "bin" }, StringSplitOptions.None)[0], @"support\cef_binary_3.2556.1368.g535c4fb_windows64_client\Release\cefclient.exe") };
var cefDriver = new ChromeDriver(options);
return cefDriver;
}).ContinueWith(async cefDriverTask =>
{
var cefDriver = await cefDriverTask;
cefDriver.Navigate().GoToUrl("https://www.google.com/gmail/about/");
cefDriver.FindElementByCssSelector(".gmail-nav__nav-link.gmail-nav__nav-link__sign-in").Click();
var user = cefDriver.FindElementById("Email");
user.SendKeys(username);
cefDriver.FindElementById("next").Click();
Thread.Sleep(100);
var pass = cefDriver.FindElementById("Passwd");
user.SendKeys(password);
cefDriver.FindElementById("signIn").Click();
});
}
}
}
我插入了 selenium 和 CefSharp 一起工作,但是我收到了奇怪的错误记录...
[0217/000149:ERROR:gles2_cmd_decoder.cc(13988)] [.Compositor-000001C8F5CE0570]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name [0217/000149:ERROR:gles2_cmd_decoder.cc(7639)] [.Compositor-000001C8F5CE0570]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering. [0217/001125:WARNING:dns_config_service_win.cc(673)] Failed to read DnsConfig. [0217/003937:WARNING:raw_channel_win.cc(532)] WriteFile: The pipe is being closed. (0xE8) [0217/003937:WARNING:proxy_message_pipe_endpoint.cc(50)] Failed to write enqueue message to channel
代码如下(Atm 应用更多的是为了调试而不是为了它的原始目的):
using System;
using System.Linq;
using System.Windows.Forms;
using CefSharp.WinForms;
using OpenQA.Selenium.Chrome;
using System.Threading;
using System.IO;
using OpenQA.Selenium;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ChromiumWebBrowser _browser;
private void button1_Click(object sender, EventArgs e)
{
_browser = new ChromiumWebBrowser("https://www.google.com/gmail/about/")
{
Dock = DockStyle.Fill,
};
Thread.Sleep(1000);
var options = new ChromeOptions { BinaryLocation = Path.Combine(System.IO.Directory.GetCurrentDirectory().Split(new[] { "bin" }, StringSplitOptions.None)[0], @"support\cef_binary_3.2556.1368.g535c4fb_windows64_client\Release\cefclient.exe") };
// options.AddArgument("no-sandbox");
var cefDriver = new ChromeDriver(options);
cefDriver.Navigate().GoToUrl("https://www.google.com/gmail/about/"); //Somewhere here error is raised that then writes a log file and pops up alert that derails whole application
Thread.Sleep(1000);
if (isAlertPresent(cefDriver)) {
// cefDriver.SwitchTo().Alert().Accept(); //This fails to close opened error dialog
}
}
public bool isAlertPresent(ChromeDriver driver)
{
try
{
driver.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException Ex)
{
return false;
}
}
}
}
我相信它与 UI 线程上的阻塞有关..
下面的代码工作正常。
using OpenQA.Selenium.Chrome;
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e)
{
var username = textBox1.Text;
var password = textBox2.Text;
if (new[] { username, password }.Any(o => string.IsNullOrWhiteSpace(o)))
{
label3.Text = "One of'em boxes is empty";
return;
}
await PassLogin(username, password);
}
async Task PassLogin(string username, string password)
{
await Task<ChromeDriver>.Factory.StartNew(() =>
{
var options = new ChromeOptions { BinaryLocation = Path.Combine(System.IO.Directory.GetCurrentDirectory().Split(new[] { "bin" }, StringSplitOptions.None)[0], @"support\cef_binary_3.2556.1368.g535c4fb_windows64_client\Release\cefclient.exe") };
var cefDriver = new ChromeDriver(options);
return cefDriver;
}).ContinueWith(async cefDriverTask =>
{
var cefDriver = await cefDriverTask;
cefDriver.Navigate().GoToUrl("https://www.google.com/gmail/about/");
cefDriver.FindElementByCssSelector(".gmail-nav__nav-link.gmail-nav__nav-link__sign-in").Click();
var user = cefDriver.FindElementById("Email");
user.SendKeys(username);
cefDriver.FindElementById("next").Click();
Thread.Sleep(100);
var pass = cefDriver.FindElementById("Passwd");
user.SendKeys(password);
cefDriver.FindElementById("signIn").Click();
});
}
}
}