Tag: selenium chromedriver

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)); } } […]

WebDriver.dll中发生了未处理的“System.InvalidOperationException”类型exception

我正在学习seleniumC#教程,我正处于第一阶段。 因此,当我运行我的控制台应用程序时,我收到以下错误。 WebDriver.dll中发生了未处理的“System.InvalidOperationException”类型exception 附加信息:未知错误:无法识别Blink修订版:3b3c00f2d95c45cca18ab944acced413fb759311 它在控制台中说 仅允许本地连接 我的代码 class Program { static void Main(string[] args) { IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl(“http://www.google.lk”); } }

如何在不丢失Cookie的情况下刷新我的Selenium ChromeDriver实例?

在我尝试使用C#在Selenium中自动化的手动测试用例中,它说:“使用复选框登录’记住我’已激活,关闭浏览器,打开浏览器,检查用户是否仍然登录。” 手动执行,这当然是成功的。 使用Chrome中的Selenium,我总是会在会话中丢失Cookie。 到目前为止我尝试了什么: public static void RefreshDriver(TestParams testParams) { var cookies = testParams.Target.Driver.Manage().Cookies.AllCookies; var url = new Uri(testParams.Target.Driver.Url); testParams.Target.Driver.Quit(); testParams.Target = testParams.Target.Clone(); // creates new ChromeDriver() string temp = url.GetLeftPart(UriPartial.Authority); testParams.Target.Driver.Navigate().GoToUrl(temp); foreach (Cookie cookie in cookies) { testParams.Target.Driver.Manage().Cookies.AddCookie(cookie); } testParams.Target.Driver.Navigate().GoToUrl(url); } 这就是我创建ChromeDriver的方法: private ChromeDriver _CreateChromeDriver(string httpProxy) { var options = new ChromeOptions(); string tempDir […]

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驱动的镀铬窗口,因此用户打开了常规的镀铬窗口。

无法在Teamcity上启动c#+ SeleniumWebDriver + Specflow + Nunit测试

现在尝试使用Teamcity服务器运行我的Selenium测试。 服务器在本地安装。 此时团队城市中的项目包含3个步骤: NuGet instaler。 使用Visual Studio作为跑步者。 以NUnit作为跑步者。 此时,第1步和第2步成功完成。 第3步失败,日志中有下一条记录: [Step 3/3] Volvo.DigitalCommerce.AutomatedTests.dll (9m:11s) [15:02:26][Volvo.DigitalCommerce.AutomatedTests.dll] Volvo.DigitalCommerce.AutomatedTests.Features.ChildSeat.CS_BaseFlowFeature.CS_GoingThroughFullFlow on Chrome (1m:01s) [15:03:28][Step 3/3] Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 6915 [15:03:28][Step 3/3] Only local connections are allowed. [15:03:28] [Volvo.DigitalCommerce.AutomatedTests.Features.ChildSeat.CS_BaseFlowFeature.CS_GoingThroughFullFlow on Chrome] [Test Error Output] -> warning: The previous ScenarioContext was already disposed. [15:03:28] [Volvo.DigitalCommerce.AutomatedTests.Features.ChildSeat.CS_BaseFlowFeature.CS_GoingThroughFullFlow on Chrome] TearDown […]

Chrome会打开一秒钟并崩溃

我正在使用Appium和C#来在我的Galaxy S5上运行测试。 Everyhting工作得很好,但是昨晚我们已经将ChromeDriver更新为2.25,我的手机中的chrome突然打开了chrome,在URL中显示“data:”并崩溃。 另一方面,Windows操作系统(selenium)上的chrome in效果很好。 [SetUp] public void Setup() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.SetCapability(“device”, “Android”); capabilities.SetCapability(“deviceName”, “Galaxy S5”); capabilities.SetCapability(“newCommandTimeout”, “300”); capabilities.SetCapability(“platformName”, “Android”); capabilities.SetCapability(“platformVersion”, “6.0.1”); capabilities.SetCapability(“appPackage”, “com.android.chrome”); capabilities.SetCapability(“appActivity”, “org.chromium.chrome.browser.ChromeTabbedActivity”); _driver = new AndroidDriver(new Uri(“http://127.0.0.1:4723/wd/hub”), capabilities, TimeSpan.FromSeconds(180)); } Appium的错误: info: [debug] Responding to client with error: {“status”:33,”value”:{“message”:”A new session could not be created. (Original error: […]

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中设置ChromeDriver的端口?

作为一些背景,我正在玩BrowserMob代理,我被端口设置阻止。 所以我想知道如何自己设置一个端口。 Server srv = new Server(@”C:\BMob\browsermob\bin\browsermob-proxy.bat”); srv.Start(); Client cln = srv.CreateProxy(); cln.NewHar(“BOWZA”); ChromeOptions co = new ChromeOptions(); Proxy seleniumProxy = new Proxy { HttpProxy = cln.SeleniumProxy }; co.Proxy = seleniumProxy; ChromeDriver cDriver = new ChromeDriver(co); // What do I do now…? 对不起,我没有找到任何记录此事的内容

更改每个文件的下载位置和名称

我正在使用Selenium和Chrome WebDriver进行自动化。 应用程序必须执行一系列需要使用不同名称(数据+报告类型)保存的下载以及与我正在下载的报告类型相匹配的文件夹。 问题是我只能在实例化新驱动程序时设置默认目录 var chromeOptions = new ChromeOptions(); chromeOptions.AddUserProfilePreference(“download.default_directory”, downloadDirectory); chromeOptions.AddUserProfilePreference(“intl.accept_languages”, “nl”); chromeOptions.AddUserProfilePreference(“disable-popup-blocking”, “true”); IWebDriver driver = new ChromeDriver(@”location chromeDriver”, chromeOptions); driver.Navigate().GoToUrl(url); 因此,我无法重命名文件名或选择相应的目录。 有谁知道我怎么能这样做?

Selenium C#打开新标签CTRL + T不使用CHROME

static void Main() { IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl(“http://google.com”); IWebElement body = driver.FindElement(By.TagName(“body”)); body.SendKeys(Keys.Control + “t”); } 这是我试图用来打开一个新选项卡而不能正常运行的代码,我没有得到任何错误,驱动程序打开谷歌,这就是所有….我已经搜索了很多,发现很多教程甚至video人们使用完全相同的代码,它适用于他们,但对我来说它没有,我无法弄清楚… 我尝试将Keys.Shift +“t”发送到搜索字段并且它可以工作,它在字段中写入大写字母T. 我也试过了 Actions act = new Actions(driver); act.KeyDown(Keys.Control).SendKeys(“t”).Perform(); 它仍然无法正常工作,但如果我将Keys.Control更改为Keys.Shift它写入,似乎没有任何涉及Keys.Control工作! 编辑:我尝试使用IE驱动程序运行代码并在那里工作,它会打开新选项卡,但它不会在Chrome上打开新选项卡?