首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从c#自动登录火狐网站

如何从c#自动登录火狐网站
EN

Stack Overflow用户
提问于 2013-10-30 00:29:45
回答 1查看 1.5K关注 0票数 1

我想从c#应用程序中发送一个命令,在火狐中打开一个网页,然后填写一个表单并单击一个按钮。

我不想使用Selenium,我能做些什么来构建它呢?

EN

Stack Overflow用户

发布于 2013-10-30 03:09:02

像selenium这样的框架工作的原因是因为网站是临时的,像firefox这样的浏览器已经实现了所需的请求和响应,而像selenium这样的框架是建立在此之上的。

至于配置文件问题,请查看here以获取有关创建自定义配置文件以供selenium使用的信息,然后像这样实例化驱动程序:

FirefoxProfile(@"...\AppData\Roaming\Mozilla\Firefox\Profiles\7923jt85.default"));=新驱动程序(新FirefoxDriver

我个人更喜欢Selenium的API。基本上,我使用firefox中的集成开发环境扩展来记录和导出C#测试用例,然后使用输出来确定Selenium如何解析html,然后构建一个库包装器,使其可根据我的需要进行自定义。(导出的测试用例有很多NUnit测试框架属性,我只是删除了所有这些属性,然后调用给定的方法。)

下面的示例将打开firefox,在谷歌中搜索“可爱的毛绒猫”,然后单击图像选项卡。如果需要,您可以使用API执行更多操作,这只是查看文档中可用内容的问题。(您可以复制此源代码,在visual studio中创建一个控制台项目,添加selenium引用,并在您的眼前看到它的执行。)

另一种选择是WatiN,但它类似于Selenium,这是一个为构建并想要测试其网站用户体验的人提供的测试框架。

代码语言:javascript
复制
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace SeleniumTests
{
    public class Googletest
    {
        private IWebDriver driver;
        private WebDriverWait wait;
        private StringBuilder verificationErrors;
        private string baseURL;
        private bool acceptNextAlert = true;

        public static void Main(string[] args)
        {
            var gt = new Googletest();
            gt.SetupTest();
            gt.TheGoogleTest();
            //gt.TeardownTest();
        }

        public void SetupTest()
        {
            driver = new FirefoxDriver();
            wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            baseURL = "https://www.google.com/";
            verificationErrors = new StringBuilder();
        }

        public void TeardownTest()
        {
            try
            {
                driver.Quit();
            }
            catch (Exception)
            {
                // Ignore errors if unable to close the browser
            }
        }

        public void TheGoogleTest()
        {
            driver.Navigate().GoToUrl(baseURL + "/");
            driver.FindElement(By.Id("gbqfq")).Clear();
            driver.FindElement(By.Id("gbqfq")).SendKeys("Cute Fluffy Cats");
            driver.FindElement(By.Id("gbqfb")).Click();
            wait.Until(d => d.FindElement(By.LinkText("Images"))).Click();

        }
        private bool IsElementPresent(By by)
        {
            try
            {
                driver.FindElement(by);
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }

        private bool IsAlertPresent()
        {
            try
            {
                driver.SwitchTo().Alert();
                return true;
            }
            catch (NoAlertPresentException)
            {
                return false;
            }
        }

        private string CloseAlertAndGetItsText()
        {
            try
            {
                IAlert alert = driver.SwitchTo().Alert();
                string alertText = alert.Text;
                if (acceptNextAlert)
                {
                    alert.Accept();
                }
                else
                {
                    alert.Dismiss();
                }
                return alertText;
            }
            finally
            {
                acceptNextAlert = true;
            }
        }
    }
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19663987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档