Tag: selenium webdriver

如何在Selenium C#中使用PageFactory / FindsBy初始化SelectElements?

我正在使用PageFactory在Selenium WebDriver中为C#构建一个页面对象模型。 不幸的是,我发现FindsByAttribute不会初始化SelectElement (HTML 标签/下拉菜单)。 到目前为止,我已经碰巧或提出了一些想法来解决它,但它们都不是理想的: PageFactory和FindsByAttribute是sealed ,所以我不能通过inheritance它来强迫它。 在每个方法中从IWebElement手动实例化SelectElement是相当混乱和重复的。 它还忽略了PageFactory明显的内置等待并抛出NoSuchElementException除非我每次都添加一个等待 – 这需要在整个地方重复定位器,从而击败(部分)POM的目的。 使用SelectElement属性包装每个IWebElement属性不那么混乱,但仍然具有与上面相同的等待问题。 到目前为止,最好的选择是#3,并为SelectElement编写一个包装器,它只是为每个方法添加一个等待。 虽然这个解决方案可行 ,但它会大量增加每个页面的代码,而不是这个(假设的)漂亮的代码: [FindsBy(How = How.Id, Using = “MonthDropdown”)] public SelectElement MonthDropdown; 我坚持使用包装器包装(我宁愿避免使用),并且: [FindsBy(How = How.Id, Using = “MonthDropdown”)] private IWebElement _monthDropdown; public Selector MonthDropdown { get { return new Selector(MonthDropdown, Wait); } } 使用Selector作为SelectElement包装器,它还必须接收IWait以便它可以等待,并在每次访问时实例化一个新的Selector 。 有更好的方法吗? 编辑:瞌睡错误的访问修饰符。 固定。 谢谢,@ JimEvans。

Selenium – 等到元素不可见

在下面的代码中,我尝试等到元素可见: var wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id(“processing”))); 是否可以告诉驱动程序等到该元素不可见?

无法使用Selenium Webdriver打开Chrome浏览器。 管理员禁用加载解压缩的扩展名

我使用Selenium Webdriver,C#,Visual Studio和Chrome浏览器自动化我的应用程序。 当selenium试图打开Chrome浏览器时,我正在低于弹出窗口。 Failed to load extension from:C:\Users\VARA~1.PAK\AppData\Local\Temp\scoped_dir6712_14913\internal. Loading of unpacked extensions is disabled by the administrator. 点击弹出窗口的确定按钮后,Chrome就会成功打开,但由于以下错误,我的测试失败了。 Test Name: _3_EnterDetailsAndSelectAnAddress_John Test FullName: Veolia.BrentGWP.UserStories.Features.BrentGWPFeature._3_EnterDetailsAndSelectAnAddress_John Test Source: : line 2147483647 Test Outcome: Failed Test Duration: 0:00:47.8059413 Result Message: Test method Veolia.BrentGWP.UserStories.Features.BrentGWPFeature._3_EnterDetailsAndSelectAnAddress_John threw exception: System.InvalidOperationException: unknown error: cannot get automation extension from unknown error: page could […]

WebDriver – 元素不可点击Chrome

我有以下问题。 我在Firefox和Chrome上运行测试。 在Firefox测试运行正确,但在Chrome SauceLabs上给出一条消息: unknown error: Element is not clickable at point (717, 657). Other element would receive the click: … (Session info: chrome=36.0.1985.125) (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.3 x86_64) 我以同样的方式在两个测试中通过唯一的css选择器选择元素: driver.FindElement(By.CssSelector(“button.btn-xs:nth-child(1)”)).Click(); 任何想法在这里有什么问题?

如何使用Selenium Web驱动程序上传文件/句柄窗口

我正在尝试自动化我必须上传文档的场景,但是当我单击Web应用程序上的“选择文件”按钮后,我无法处理“ 文件上载”窗口。 我正在使用C#语言和Chrome浏览器。

IE 11点击一个按钮,等待时间超过selenium webdriver

我有一个场景,我点击一个按钮,弹出窗口,我需要点击另一个按钮。 驱动程序正在单击页面中的按钮,并且在timedout中保持在同一元素上。 我可以看到弹出窗口中的按钮被选中但未点击。 我尝试使用CSS选择器而不是XPath。 尝试使用SendKeys(“\ n”),Sendkeys(keys.ENTER)。 没有任何效果。 我正在使用IE11,selenium webdriver 2.52,Windows 8.1。 司机等待的方法: public static void ImportThisFile() { try { new WebDriverWait(Drivers._driverInstance, TimeSpan.FromSeconds(2000)); Drivers._driverInstance.FindElement(By.CssSelector(“#import-this-file-button”)).Click(); Drivers._driverInstance.SwitchTo(); new WebDriverWait(Drivers._driverInstance, TimeSpan.FromSeconds(2000)); Drivers._driverInstance.FindElement(By.CssSelector(“.btn.medium.left”)).SendKeys(OpenQA.Selenium.Keys.Enter); //Drivers._driverInstance.FindElement(By.XPath(“.//*[@id=’process-file-form’]/fieldset/div[3]/input”)); Drivers._driverInstance.SwitchTo().ParentFrame(); } catch(Exception e) { Drivers._driverInstance.FindElement(By.XPath(“html/body/div[6]/div[1]/button”)).Click(); ; throw new Exception(“Import pop up window: ” + e); } } 在堆栈跟踪中,我得到了timedout messsage: Test method SDTestAutomation.SDDirectPage_Tests.Upload_DuplicateData threw exception: OpenQA.Selenium.WebDriverException: […]

使用selenium Firefox webdriver将 文本清空

我在Windows 7上使用Firefox 21和C#WebDriver 2.33。我很困惑为什么以下测试失败(我只是检查我的配置设置是否正确)。 这在其他浏览器中传递。 [Test] public void FirefoxDriverWorks() { var firefoxDriver = new FirefoxDriver(); TestGoogleStillExists(firefoxDriver); firefoxDriver.Quit(); } public void TestGoogleStillExists(IWebDriver webDriver) { webDriver.Navigate().GoToUrl(“http://www.google.com”); var title = webDriver.FindElement(By.CssSelector(“head title”)); Assert.That(title.Text, Is.EqualTo(“Google”)); }

如何使用Selenium WebDriver和C#单击该复选框

我要做的是点击(或关闭)我页面上的任何复选框。 从HTML中可以看出,每个复选框元素看起来都有一个唯一的标识符,但是当我尝试点击它时,我得到一个“未找到元素”exception。 我已经尝试了所有标准定位器(也没有iframe) – 我可以找到复选框元素确定但是无法点击它。 请查看以下HTML: Option 1   Option 2   Option 3     Option 4   Option 5   Option 6   我可以单击任何复选框元素的唯一方法是找到以下元素: 使用Xpath定位器: ie //*[@id=”toggle_undefined”] 在这种情况下会触发click事件,但显然只会点击页面上的第一个元素(或本例中的复选框)(我在页面上有超过20个复选框)。 基于上面的HTML代码,假设我想在第二行启用第二个复选框元素。 以下是此复选框元素的代码: Option 5   根据上面的信息,我只能通过查找并单击以下元素来单击该复选框: 我该如何为这个元素创建一个独特的xpath定位器,我可以用来点击我页面上的任何复选框?

Selenium无法处理IE中的“确认证书”弹出窗口

我正在尝试登录网站并使用Selenium通过代码截取屏幕截图。 到目前为止,除了一个问题之外,它一直很好用:每次我手动和使用Selenium访问网站时,弹出窗口都会要求我确认安全证书。 证书很好,但我不能为我的生活让Selenium接受窗口。 我知道它可以处理警报并因此接受它们: driver.Navigate().GoToUrl(“https://www.securewebsite.com”); driver.SwitchTo().Alert().Accept(); 但是盒子不会消失或反应,并且除了接受或拒绝警报(没有效果)之外,尝试对驱动程序做任何事情都会导致模态对话存在错误。 我正在寻找一种方法来关闭这个弹出窗口或者Selenium在代码中处理它的方法,最好是后者。 如果我能提供更多信息,请告诉我。

Selenium测试工作时如何工作

当我编写自动化测试并运行它们(在我的电脑上)时,我无法工作直到测试完成,因为例如,如果我正在编码焦点将跳出visual studio转到web浏览器中查看的测试中的web应用程序。 有没有办法阻止Selenium驱动程序窃取焦点?