Tag: webdriver

对多个驱动程序运行WebDriver NUnit测试

我们最近开始使用WebDriver(支持Selenium 1)使用NUnit框架执行浏览器测试。 由于我们希望在各种浏览器中运行测试,因此我们为每个浏览器定义驱动程序,并在夹具设置期间将它们放入列表中: [TestFixtureSetUp] public void SetupTest() { // Load drivers Drivers = new List { new ChromeDriver(), … }; 在每个单独的测试中,我们遍历列表,如下所示: [Test] public void SomeTest() { foreach (var driver in Drivers) { driver.Navigate().GoToUrl(“…”); … 在所有测试方法中都这样做是错误的。 测试方法不应该关注他们应该使用什么驱动程序。 理想情况下,我们会有这样的事情: public void SomeTest(IWebDriver driver) { driver.Navigate().GoToUrl(“…”); … 我们可以解决这个问题的一种方法是使用TestCases: [TestCase(new ChromeDriver())] [TestCase(new FireFoxDriver())] … 但这有很多重复,并将驱动程序正确初始化的问题转移到每个测试的属性中。 不是真正的收获。 是否有任何方法可以告诉NUnit框架执行整套测试并在每次运行中为各个测试注入不同的参数? 或者还有其他任何好的解决方案吗?

当手动中断浏览器时,Selenium会停止

当Selenium启动它时会打开浏览器并开始填充数据,但当用户在selenium运行时点击浏览器中的某个位置时,selenium执行会停止,这会导致我的应用程序崩溃,是否可以处理此类崩溃

设置PhantomJS C#中的屏幕尺寸由Selenium驱动

如何设置浏览器屏幕大小? 当我在设置PhantomJS之后进行屏幕截图时,它只显示400px宽的图像。 var driverService = PhantomJSDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; driverService.LoadImages = false; driverService.ProxyType = “none”; using (var driver = new PhantomJSDriver(driverService)) { etc…. }

在Selenium PhantomJSDriver中指定PhantomJS命令行选项

PhantomJS驱动程序是否支持命令行参数? 我需要使用PhantomJS驱动程序运行Selenium测试并禁用Web安全性。 我试过了: PhantomJSOptions options = new PhantomJSOptions(); options.AddAdditionalCapability(“web-security”,false); driver = new PhantomJSDriver(Environment.CurrentDirectory + @”\drivers”, options); 但这似乎不起作用。 PhantomJSDriver是否允许传递命令行参数?

Selenium c#接受确认框

我在c#中使用selenium编写了一个nUnit测试。 一切顺利,直到我必须确认一个JS确认框。 这是我正在使用的代码: this.driver.FindElement(By.Id(“submitButton”)).Click(); this.driver.SwitchTo().Alert().Accept(); 提交按钮后出现确认框。 确认出现然后立即消失,但表单不提交。 无论上面的accept()行如何,行为都是相同的。 我使用的是Firefox v15.0.1和selenium v​​2.24 我尝试在提交点击和确认接受之间放置一个Thread.Sleep。 我读过的所有内容都说selenium驱动程序会自动发送确认信息,但其他内容似乎正在发生。

如何在静默模式下执行Selenium Chrome WebDriver?

使用Chrome Selenium-WebDriver时,它将在服务器启动时输出诊断输出: 在端口9515上启动ChromeDriver(v2.0) 我不想看到这些消息,我怎么能抑制它们呢? 我这样做 ChromeOptions options = new ChromeOptions(); options.AddArgument(“–silent”); IWebDriver Driver = new ChromeDriver(options); 但诊断输出不会被抑制。

Selenium C#Webdriver FindElements(By.LinkText)RegEx?

是否可以通过使用类似A-ZNN:NN:NN:NN的模式搜索其文本来查找网页上的链接,其中N是单个数字(0-9)。 我在PHP中使用了Regex将文本转换为链接,所以我想知道是否可以在Selenium中使用这种filter和C#来查找按照某种格式看起来相同的链接。 我试过了: driver.FindElements(By.LinkText(“[AZ][0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2}”)).ToList(); 但这没效果。 任何建议?

如何连接已经打开的浏览器?

我非常感谢有关如何使用Selenium Webdriver通过C#连接到已经打开的浏览器的指南。 这个问题占我脚本开发时间的30%左右!

查找Selenium WebDriver启动的浏览器进程的PID

在C#中我启动了一个浏览器进行测试,我想得到PID,这样在我的winforms应用程序中我可以杀死所有剩余的ghost进程 driver = new FirefoxDriver(); 我怎样才能获得PID?

使用Selenium突出显示文本

我有一个上下文相关菜单,需要高亮显示文本才能使其正常工作。 但是,我在使用Selenium选择文本时遇到问题。 我首先找到我正在寻找的WebElement,然后尝试使用不同的鼠标事件与它进行交互。 当我试图选择部分文本时,除了将标记放在字符串的末尾之外,它似乎没有做任何其他事情。 这是我的文本框的样子: 这就是我需要它看起来的样子,换句话说,我需要Selenium选择的东西(只是为了说明的目的手动完成它: 这与我在代码中尝试做的一致: public static async Task HighlightElementByCssSelector(this RemoteWebDriver @this, string cssSelector, TimeSpan? timeout = null, TimeSpan? interval = null) { var element = await @this.FindElementByCssSelectorAsync(“.testmarker-registryentryedit .testmarker-title-field”); Actions action = new Actions(@this).MoveToElement(element).ClickAndHold(element).MoveByOffset(10,0).Release(); action.Build().Perform(); } 在这种情况下,@ this表示驱动程序,而FindElementByCssSelectorAsync是“包装器框架”的一部分。 我尝试过不同的MoveToElement,DragAndDrop,ClickAndHold等组合,但我无法让它工作。 关于这里可能有什么问题的任何指示?