Tag: selenium

Selenium – 带透明代理的MoveToElement()

我有元素 public ArticlePage() { PageFactory.InitElements(Browser.driver, this) } [FindsBy(How = How.Id, Using = “someId”)] private IWebElement btnTitleView { get; set; } 和行动 Actions action = new Actions(Browser.driver); action.MoveToElement(btnTitleView).Perform(); 但是当我尝试运行它时,我会收到错误 ‘System.Reflection.TargetException’对象与目标类型不匹配。 我试图通过Browser.driver.FindElement(By.Id(“someId”))找到这个元素,然后它正常工作。 因此,它存在并显示。 是否可以使用透明代理来执行Actions ? 有没有其他方法可以对透明代理执行MoveToElement()操作?

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

如何设置Selenium和ChromeDriver在无头模式下运行

我正在尝试使用xUnit,Selenium和Chrome Canary(无头模式)运行浏览器测试,但我一直收到此错误: OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver server for URL http://localhost:58692/session timed out after 60 seconds. 这是我的代码: var chromeOptions = new ChromeOptions { BinaryLocation = @”C:\Users\\AppData\Local\Google\Chrome SxS\Application\chrome.exe”, DebuggerAddress = “127.0.0.1:9222” }; chromeOptions.AddArguments(“no-sandbox”, “headless”, “disable-gpu”); _driver = new ChromeDriver(chromeOptions) {Url = Url}; 我对C#很陌生,所以我不确定我是否做了一些公然错误的事情,或者我是否只是错过了一个设置。 谷歌上面的错误告诉我,我需要设置调试器地址并使用no-sandbox标志,但似乎都没有帮助。 使用这些版本: selenium 3.4 chromedriver 2.29 xunit 2.2

Selenium – C# – Webdriver – 无法找到元素

在C#中使用selen我正在尝试打开浏览器,导航到Google并找到文本搜索字段。 我试试下面的 IWebDriver driver = new InternetExplorerDriver(@”C:\”); driver.Navigate().GoToUrl(“www.google.com”); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); IWebElement password = driver.FindElement(By.Id(“gbqfq”)); 但得到以下错误 – 无法找到id == gbqfq的元素

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”); } }

在系统测试中使用Selenium时,使用Thread.Sleep的替代方法是什么?

我有一个使用Selenium的TestMethod如下: [TestMethod] public void ShouldSendPasswordReminder() { // go to loginregister url _fireFoxWebDriver.Navigate().GoToUrl(UkPaBaseUrl + “loginregister.aspx”); Thread.Sleep(1000); // click the forgotten password _fireFoxWebDriver.FindElement(By.LinkText(“Forgotten your password?”)).Click(); Thread.Sleep(1000); // enter your email address _fireFoxWebDriver.FindElement(By.Id(“PasswordResetRequest1_PasswordResetRequest_Username”)) .SendKeys(“username.lastname@domain.com”); Thread.Sleep(1000); // click submit _fireFoxWebDriver.FindElement(By.Id(“PasswordResetRequest1_PasswordResetRequest_PasswordResetRequestSubmit”)).Click(); Thread.Sleep(5000); // assert Assert.IsTrue(_fireFoxWebDriver.Url.Contains(“ThankYou”)); } 正如你所看到的,我必须多次调用Thread.Sleep(因为页面可能需要一些时间来完成它由于javascript等所做的事情),因为Selenium似乎无法处理页面加载和延迟不同于WatiN。 这使代码相当丑陋而且不太可靠。 处理此类场景的更好方法是什么? 您是否也在测试中经常编写Thread.Sleep调用? 谢谢,

C#和断点 – 我们这里有魔术师吗?

我有这个: public static void ByLinkText(string text) { for (var i = 0; i < 50; i++) { try { Setup.Driver.FindElement(By.LinkText(text)).Click(); return; } catch (Exception) { } } } (中间的奇怪代码是selenium – 让我们跳过它,这不是这里的情况) 好吧,所以我有这个ByLinkText()方法,你在这里看不到的是,我无限地重复这个方法,直到这个中间的东西将正确执行然后点击return之后。 所以:这个中间代码没有正确执行,我想知道为什么,所以我在做什么? 我在catch部分放了一个断点。 怎么了? 没什么(和ByLinkText()仍然无限进行!)。 现在,你会告诉我“嘿!那个中间代码不是什么东西!”但是哦,甜蜜的祝福……那个中间代码可以做两件事:要么向我扔东西,要么就像它应该做的那样( certificate1和certificate2 )。 最后,这是怎么回事? 关于断点。 一旦我把断点放在那个return (就在魔法代码之后!)代码正确执行! 程序化世界如何可能,断点修复我的应用程序!?

如何在不关闭它的情况下在同一浏览器实例中运行多个测试方法(C#,SeleniumWebDriverz NUnit)?

我是c#和Selenium的初学者。 我想知道是否可以在相同的浏览器实例中运行多个[TestMethod] -s而不关闭它? 例如,在“Can_Change_Name_And_Title”完成之后,我想继续“Can_Change_Profile_Picture”。 [TestMethod] public void Can_Change_Name_And_Title() { SidebarNavigation.MyProfile.GoTo(); ProfilePages.SetNewName(“John Doe”).SetNewTitle(“New Title Test”).ChangeNameTitle(); } [TestMethod] public void Can_Change_Profile_Picture() { SidebarNavigation.MyProfile.GoTo(); ProfilePages.SetNewProfilePicture(Driver.BaseFilePath + “Profile.png”).ChangeProfilePicture(); }

带有Specflow的DataSource属性,用于多个浏览器测试

我在C#中进行了一些web ui测试,这些测试是通过browserstack中的selenium执行的。 目前这些只是简单的单位ms测试,它们在不同的浏览器中执行。 我想将测试移植到specflow,但我真的不知道如何进行多个浏览器测试。 目前,要在多个浏览器中执行这些测试,我使用的是DataSource属性,它基本上为XML文件中的相同测试提供不同的输入 [TestMethod] [Ignore] [DeploymentItem(“JLL.Specs\\Browsers.xml”)] [DataSource(“Microsoft.VisualStudio.TestTools.DataSource.XML”, “|DataDirectory|\\Browsers.xml”, “Row”, DataAccessMethod.Sequential)] public void LoadHomePageAndFindSearchBox() { … } 问题是Specflow不支持DataSource属性。 任何的想法? 这是XML文件: Firefox 31.0 Windows 7 1280×1024 Chrome 36.0 Windows XP 1024×768 …

使用Selenium更改eBay页面内容/ DOM的最简单方法

Selenium显然不是为了允许你修改浏览器页面的DOM而设计的,但我偶尔需要动态插入HTML元素。 在这个例子中:我使用Firefox和Selenium IDE来记录eBay上的拍卖列表,但我注意到它无法应对大量的JScripted拍卖内容控件并且没有为这些元素记录任何内容。 如果我为ebay网站关闭JavaScript,第一个拍卖条目页面的更简单版本就会被破坏(它缺少确认PayPal作为付款选项所需的隐藏输入元素)。 所以,我目前的选择是…… a)弄清楚如何与Selenium的花哨的JScript HTML编辑器控件进行交互,或者b)将新元素插入到DOM中。 有没有人有任何建议,最好是在C#,因为我在Windows控制台应用程序下自动执行此操作? 如果有人拥有代码,也可以接受Selenium User-Extensions。