Tag: selenium

如何修复“权限被拒绝访问属性’文档’”?

在尝试使用selenium rc进行自动化测试时遇到了这个问题。 我只是按照教程中的步骤操作。 这是代码(与教程相同): [TestFixture] public class SeleniumTest { private ISelenium selenium; private StringBuilder verificationErrors; [SetUp] public void SetupTest() { selenium = new DefaultSelenium(“localhost”, 4444, @”*custom D:\Program Files (x86)\Firefox 4\firefox.exe”, “http://www.google.com/”); selenium.Start(); verificationErrors = new StringBuilder(); } [TearDown] public void TeardownTest() { try { selenium.Stop(); } catch (Exception) { // Ignore errors if unable to […]

如何在不丢失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 […]

当我将Webdriver Firefox配置文件设置为默认下载所有文件时它无法正常工作

我设置firefox配置文件默认下载所有文件,但是当涉及到图像时,它弹出一个对话框,并告诉我天气保存或查看。 我使用的代码如下 var folderName = “temp”; var profile = new FirefoxProfile { EnableNativeEvents = true }; profile.SetPreference(“browser.download.folderList”, 2); profile.SetPreference(“browser.download.manager.showWhenStarting”, false); profile.SetPreference(“browser.download.dir”, folderName); profile.SetPreference(“browser.download.downloadDir”, folderName); profile.SetPreference(“browser.download.defaultFolder”, folderName); profile.SetPreference(“browser.helperApps.neverAsk.saveToDisk”, “application/all”); _webDriver = new FirefoxDriver(profile);

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

使用selenium选择表格中的复选框

我正在尝试检查表中的复选框,它实际上能够找到复选框,但它不会检查/单击复选框。 selectCheckbox.Click()不起作用,有人可以向我解释为什么不检查/点击复选框? 谢谢 :) 我的代码是这样的: IWebElement table = WebBrowser.Current.FindElement(By.TagName(“tbody”)); ReadOnlyCollection allRows = table.FindElements(By.TagName(“tr”)); for (int z = 0; z < allRows.Count; z++) { ReadOnlyCollection cells = allRows[z].FindElements(By.TagName(“td”)); for (int y = 0; y < cells.Count; y++) { var value = allRows[z].FindElements(By.TagName("td"))[y].Text; if (value.Equals(tenant)) { var selectCheckbox = allRows[z].FindElements(By.TagName("td"))[y – 1]; selectCheckbox.Click(); } } }

Selenium将文本粘贴到textarea中

使用Selenium,我想编辑textarea的内容。 调用textarea.SendKeys(“My text”)可以正常工作,但它会逐个字母地输入,对于较长的字符串来说,这显然很慢。 我找到的一个解决方法( http://code.google.com/p/selenium/issues/detail?id=2876 )建议我将字符串复制到剪贴板并将其粘贴到textarea 。 他们给出的Keys引用在OpenQA.Selenium.Keys和System.Windows.Forms.Keys之间是不明确的,所以我尝试了它们。 这是我的代码: Clipboard.SetDataObject(“My text”); textarea.SendKeys(OpenQA.Selenium.Keys.Control + “v”); 这冻结了应用程序。 如果我使用System.Windows.Forms.Keys.Control ,它会在controlv中输入,这显然不是我想要的。 有没有人知道问题可能是什么?

Selenium C# – 无法使用xlink:href属性单击元素

对于C#来说,我是Selenium的新手。 我想点击标签之间的元素(下图)。 我尝试过以下方法: driver.FindElement(By.XPath(“//use[@href=’#events-widget’]”)).Click(); driver.FindElement(By.XPath(“//use[@href=’#events-widget’/]”)).Click(); driver.FindElement(By.XPath(“//use[@xlink:href=’#events-widget’]”)).Click(); driver.FindElement(By.XPath(“//use[@xlink:href=’#events-widget’]/”)).Click(); driver.FindElement(By.LinkText(“Events”)).Click(); 帮助将不胜感激:)

是否存在Selenium Webdriver录像机?

是否存在Selenium 2 WebDriver的录像机 ? 对于Selenium 1,IDE已经作为Firefox插件。 您可以将操作记录为脚本,并让它们自动重复。 但我正在为Selenium WebDriver寻找相同的东西,可能是作为浏览器插件或桌面应用程序。

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)); 有没有人知道设置此首选项的“正确”方法,以便它可以工作?

通过Options类或DesiredCapabilities禁用IE弹出窗口阻止程序

我知道这可以手动完成一次,方法是转到工具> Internet选项>隐私,然后取消选中打开弹出窗口阻止程序 。 问题是如果我在另一台机器上运行这些测试,与弹出窗口相关的测试将失败。 有没有办法使用Internet Explorer Options或DesireCapabilities来完成此任务。 我尝试过选项 var options = new InternetExplorerOptions { EnableNativeEvents = false }; options.EnsureCleanSession = true; options.UnexpectedAlertBehavior = InternetExplorerUnexpectedAlertBehavior.Dismiss; 我试过了 InternetExplorerUnexpectedAlertBehavior.Accept; 但是,没有奏效。 仍然阻止弹出窗口