Tag: selenium webdriver

在C#中使用PhantomJS获取屏幕截图

我已经将PhantomJS和Selenium添加到我的C#控制台应用程序中,我希望在它到达特定元素时拍摄浏览器的屏幕截图。 原因是因为出于某种原因,当我使用ChromeDriver时,它工作正常,但是当我使用PhantomJS时,它会在一些元素上失败。 我想我需要介绍如何使用phantomjs在C#中截取屏幕截图。 我在互联网上环顾四周,看起来每个人都在使用java脚本来做这件事。 我遇到的问题是我不知道如何将java脚本集成到我的C#应用​​程序中,然后使用它与phantomJS来获取屏幕截图。 如果我能得到一些如何做到这一点的帮助,那将是非常好的。 TLDR:我找到了http://code.tutsplus.com/tutorials/testing-javascript-with-phantomjs–net-28243这就是我想要做但我不知道怎么用我的javascript c#app。

在Windows 7中使用C#运行Selenium测试时出现“IEDriverServer不存在”错误

我正在使用带有C#的WebDriver开发Automation框架。 它与Firefox一起工作正常,但不适用于IE。 我收到以下错误: IEDriverServer.exe不存在 – 文件c:\ users \ administrator \ documents \ visual studio 2010 \ projects \ TestProject1 \ TestProject1 \ _bin \ Debug \ IEDriverServer.exe不存在。 该驱动程序可以从http://code.google.com/p/selenium/downloads/list下载 我使用的是IE 9和Windows 7。 IWebDriver driver = new InternetExplorerDriver(); driver.Navigate().GoToUrl(“http://www.google.co.uk”); IWebElement queryBox = driver.FindElement(By.Name(“q”)); queryBox.SendKeys(“The Automated Tester”); queryBox.SendKeys(Keys.ArrowDown); queryBox.Submit(); 也可以看看 。

如何在selenium webdriver中等待元素加载?

我是selenium webdriver的新手,正在测试一个应用程序。 在我的应用程序中,我必须测试关于Facebook帐户的链接。 每当我点击链接时,弹出窗口都会显示在我必须输入凭据的位置。 我有时能够链接,有时测试失败。 我知道原因是因为加载弹出窗口需要时间并且执行下一个命令所以它无法找到该元素。 我使用过Thread.Sleep,但我想使用隐式等待或显式等待,这总是一个很好的做法,而不是Thread.Sleep。 如何使用隐式等待以及在哪里使用该命令? 请指教。 谢谢。 public void SocialFaceBook() { string currentWindow = driver.CurrentWindowHandle; PopupWindowFinder finder = new PopupWindowFinder(driver); string facebookWindow = finder.Click(driver.FindElement(By.XPath(“//div[@id=’panelFacebook’]/div[2]/div[3]/div[3]/a”))); // Switch To FaceBook Window driver.SwitchTo().Window(facebookWindow); System.Threading.Thread.Sleep(3000); // Link // Email Address IWebElement faceBookLinkEmail = driver.FindElement(By.Id(“email”)); faceBookLinkEmail.SendKeys(SocialFaceBookEmail); // Password IWebElement faceBookLinkPass = driver.FindElement(By.Id(“pass”)); faceBookLinkPass.SendKeys(SocialFaceBookPass); // Log In Button […]

如何为Selenium添加自定义的ExpectedConditions?

我正在尝试为Selenium编写自己的ExpectedConditions,但我不知道如何添加新的。 有人有例子吗? 我在网上找不到任何教程。 在我目前的情况下,我想等到元素存在,可见,启用并且没有attr“aria-disabled”。 我知道这段代码不起作用: var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(seconds)); return wait.Until((d) => { return ExpectedConditions.ElementExists(locator) && ExpectedConditions.ElementIsVisible && d.FindElement(locator).Enabled && !d.FindElement(locator).GetAttribute(“aria-disabled”) } 编辑:一些额外的信息:我遇到的问题是使用jQuery选项卡。 我在禁用的选项卡上有一个表单,它将在选项卡变为活动状态之前开始填写该选项卡上的字段。

不支持复合类名称。 考虑搜索一个类名并过滤结果

我使用driver.findelement by.classname方法在firefox浏览器上读取一个元素,但我得到“不支持复合类名。考虑搜索一个类名并过滤结果。” 例外 这是我的代码 driver.FindElement(By.ClassName(“bighead crb”)).Text.Trim().ToString() //and here is how the html of browser looks like LEAD DELIVERY MADE EASY

Selenium Webdriver PhantomJS C#总是打开一个cmd窗口

我想在C#中使用PhantomJS和Selenium Webdriver。 以下是我的代码: IWebDriver driver = new PhantomJSDriver(); driver.Navigate().GoToUrl(“http://www.google.com”); Console.WriteLine(driver.Url); driver.Quit(); 代码工作正常但无论何时运行,它都会打开一个cmd窗口,其中显示了phantomjs的所有日志。 cmd也用driver.Quit()关闭。 问题是我不希望显示cmd窗口。 我该怎么做才能做到这一点? 更新:当我在Python中执行相同的代码时,cmd窗口不会显示。 但是如果我使用py2exe将python脚本转换为exe,则cmd窗口将再次显示。

Webdriver如何等待元素在webdriver C#中可单击

在浏览器中生成元素后,有一个块Ui覆盖所有元素几秒钟,因为我面临一个问题,因为元素已经存在,web驱动程序尝试单击元素但是单击是Block UI收到。 我曾尝试使用wait Until但我没有帮助,因为我可以在C#webdriver中找到isClickAble var example = _wait.Until((d) => d.FindElement(By.XPath(“Example”))); var example2 = _wait.Until(ExpectedConditions.ElementIsVisible(By.XPath(“Example”))); example.click(); example2.click(); isClickAble是否有C#等价物,提前谢谢

如何使用Selenium Webdriver .NET绑定设置Chrome首选项?

这是我正在使用的,用户代理可以成功设置,而下载首选项不能。 Windows 7,Chrome 26,Selenium-dotnet-2.31.2,chromedriver_win_26.0.1383.0 ChromeOptions chromeOptions = new ChromeOptions(); var prefs = new Dictionary { { “download.default_directory”, @”C:\code” }, { “download.prompt_for_download”, false } }; chromeOptions.AddAdditionalCapability(“chrome.prefs”, prefs); chromeOptions.AddArgument(“–user-agent=” + “some safari agent”); var driver = new ChromeDriver(chromeOptions); 取自chromedriver.log: [1.201][FINE]: Initializing session with capabilities { “browserName”: “chrome”, “chrome.prefs”: { “download.default_directory”: “C:\\code”, “download.prompt_for_download”: false }, “chrome.switches”: [ “–user-agent=Mozilla/5.0 […]

ChromeDriver显示丢失的UI共享上下文

我有一台运行Windows 7虚拟机的Windows 10笔记本电脑。 在虚拟机内部,当我启动WebDriver时,它在启动时给出错误gpu_process_transport_factory.cc 丢失的UI共享上下文 : IWebDriver driver = new ChromeDriver() //This causes the 1009 Error 然后因查询立体声录音 失败而无法发送GpuChannelMsg_CreateCommandBuffer 和 command_buffer_proxy_impll.cc 共享内存句柄无效 。 这已经工作了几个月并且没有进行任何更改 (此WebDriver是虚拟机的唯一目的),运行它的笔记本电脑运行正常(即没有GPU问题)。 WebDriver仍会浏览页面,但会产生更多错误并且速度会慢10倍。 编辑 :更新到ChromeDriver到2.35仍然是相同的行为。

使用Selenium使用WindowHandles跟踪和迭代选项卡和窗口的最佳方法

我们正在使用Selenium webdriver为Internet Explorer 11进行UI测试。在经过测试的Web应用程序中,有几个屏幕弹出。 在几个测试中,我们最终得到三个browserwindows,还有三个Driver.WindowHandles。 要从一个WindowHandle切换到另一个WindowHandle,我们预计Driver.WindowHandles将像最旧的窗口一样排序,最新的窗口最后。 但情况并非如此:它完全是随机的! 因为windowhandle是一个GUID,所以我们最终使用WindowHandle GUID作为键创建一个字典,其中包含在浏览器窗口中加载的页面类型的值。 但是这也导致在关闭窗口时维护字典。 对于这么简单的事情来说,这似乎是很多工作。 有更好的解决方案吗?