如何一次打开Selenium Webdriver并使用它

贝特里萨·雷瓦(Betrisa Revaal)

我有一个简单的网站(https://www.orbismodding.com/),我想使其自动化。我使用selenium firefox webdriver来做到这一点,并创建了一个按钮单击以将文本发送到输入文件中,然后单击搜索按钮并将结果保存到我的代码文本框中:

        private void mtboxCUSA_ButtonClick(object sender, EventArgs e)
        {
            string cusa = mtboxCUSA.Text;
            FirefoxOptions firefoxBinary = new FirefoxOptions();
            firefoxBinary.AddArgument("-headless");
            firefoxBinary.AddArgument("--width=300");
            firefoxBinary.AddArgument("--height=300");
            firefoxBinary.SetPreference("permissions.default.image", 2);
            firefoxBinary.SetPreference("permissions.default.stylesheet", 2);
            var ffds = FirefoxDriverService.CreateDefaultService();
            ffds.HideCommandPromptWindow = true;
            IWebDriver driver = new FirefoxDriver(ffds, firefoxBinary);
            driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
            
            driver.Navigate().GoToUrl("https://www.orbismodding.com/");
            wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#titleID")));
            driver.FindElement(By.CssSelector("#titleID")).SendKeys(cusa);
            driver.FindElement(By.Name("searchBtn")).Click();
            wait.Until(ExpectedConditions.ElementExists(By.XPath("/html/body/div/div/h3")));
            string gname = driver.FindElement(By.XPath("/html/body/div/div/h3")).Text;
            btboxCusaResult.Text = gname;

        }

问题是,每当我单击按钮时,它都需要花费一些时间才能打开一个新的webdriver窗口来进行自动化!如何使用以前使用过的现有网络驱动程序?硒还有其他方法吗?(如HttpRequest)

朱利安

您可以保持简单,并为driverwait对象添加一个类变量

您最终将得到以下内容:

IWebDriver driver;
WebDriverWait wait;
private void mtboxCUSA_ButtonClick(object sender, EventArgs e)
{
    string cusa = mtboxCUSA.Text;
    if(driver == null)
    {
        FirefoxOptions firefoxBinary = new FirefoxOptions();
        firefoxBinary.AddArgument("-headless");
        firefoxBinary.AddArgument("--width=300");
        firefoxBinary.AddArgument("--height=300");
        firefoxBinary.SetPreference("permissions.default.image", 2);
        firefoxBinary.SetPreference("permissions.default.stylesheet", 2);
        var ffds = FirefoxDriverService.CreateDefaultService();
        ffds.HideCommandPromptWindow = true;
        driver = new FirefoxDriver(ffds, firefoxBinary); 
        driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30);
        wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
    }

    driver.Navigate().GoToUrl("https://www.orbismodding.com/");
    wait.Until(ExpectedConditions.ElementExists(By.CssSelector("#titleID")));
    driver.FindElement(By.CssSelector("#titleID")).SendKeys(cusa);
    driver.FindElement(By.Name("searchBtn")).Click();
    wait.Until(ExpectedConditions.ElementExists(By.XPath("/html/body/div/div/h3")));
    string gname = driver.FindElement(By.XPath("/html/body/div/div/h3")).Text;
    btboxCusaResult.Text = gname;
}

如果要测试到达网站的数据,并假设您在网站的后端具有REST Api,则可以针对API进行集成测试。在这种情况下,您将使用HttpClient进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用JavaScript一次打开新标签页

来自分类Dev

如何一次定义管道阶段并多次使用它

来自分类Dev

如何在 WebDriver 类中初始化一次驱动程序,然后使用它来启动其他类?

来自分类Dev

如何使用一个热键一次关闭/打开多个程序?

来自分类Dev

Selenium Python一次处理多个Webdriver

来自分类Dev

如何一次导入bootstrap-sass并在多个文件中使用它?

来自分类Dev

如何仅一次获取数据并在联合查询中使用它

来自分类Dev

我正在尝试在Pycharm中使用Selenium Webdriver,可以在项目中使用它还是仅在Python控制台中使用它?

来自分类Dev

Selenium Java-如何登录一次并使用同一浏览器实例运行多个测试用例,而是为每个测试打开/关闭浏览器

来自分类Dev

使用javascript / jquery一次打开多个页面

来自分类Dev

我创建了一个关闭/打开按钮,但是第一次使用它时,您需要单击两次

来自分类Dev

Angular-如何一次在一个请求中订阅数据,并在子组件中使用它?

来自分类Dev

如何使用Webdriver一次设置文本字段的值?

来自分类Dev

在Node.js中,如何加载模块一次,然后在整个应用程序中使用它们?

来自分类Dev

如何使图像成为对象,以便可以一次构建它,然后继续使用它?

来自分类Dev

在 PHP 中,如何只创建一次数据库连接并从 JavaScript 到 Ajax 多次使用它?

来自分类Dev

如何使用Selenium Webdriver?

来自分类Dev

如何使用PhantomJS使用Selenium Webdriver打开附加链接?

来自分类Dev

如何使用phantomJS使用Selenium WebDriver打开附加链接?

来自分类Dev

PHP如何使用它?

来自分类Dev

如何在元素属性中使用一次绑定或一次角度

来自分类Dev

如何使用鼻子测试测试一次循环(一次)(Python 2.7)

来自分类Dev

如何一次动态查询一次使用php在mysql中插入多条记录?

来自分类Dev

如何使用“setInterval()”每秒更新一次时间而不会每秒闪烁一次?

来自分类常见问题

如何使用Selenium WebDriver打开新标签页?

来自分类Dev

如何使用Selenium WebDriver打开网站并填写输入

来自分类Dev

使用Selenium Webdriver时如何打开普通的chrome或Firefox窗口?

来自分类Dev

切换菜单,一次使用纯JavaScript打开一个菜单

来自分类Dev

使用哈希映射一次打开一个JInternalFrame实例

Related 相关文章

  1. 1

    如何使用JavaScript一次打开新标签页

  2. 2

    如何一次定义管道阶段并多次使用它

  3. 3

    如何在 WebDriver 类中初始化一次驱动程序,然后使用它来启动其他类?

  4. 4

    如何使用一个热键一次关闭/打开多个程序?

  5. 5

    Selenium Python一次处理多个Webdriver

  6. 6

    如何一次导入bootstrap-sass并在多个文件中使用它?

  7. 7

    如何仅一次获取数据并在联合查询中使用它

  8. 8

    我正在尝试在Pycharm中使用Selenium Webdriver,可以在项目中使用它还是仅在Python控制台中使用它?

  9. 9

    Selenium Java-如何登录一次并使用同一浏览器实例运行多个测试用例,而是为每个测试打开/关闭浏览器

  10. 10

    使用javascript / jquery一次打开多个页面

  11. 11

    我创建了一个关闭/打开按钮,但是第一次使用它时,您需要单击两次

  12. 12

    Angular-如何一次在一个请求中订阅数据,并在子组件中使用它?

  13. 13

    如何使用Webdriver一次设置文本字段的值?

  14. 14

    在Node.js中,如何加载模块一次,然后在整个应用程序中使用它们?

  15. 15

    如何使图像成为对象,以便可以一次构建它,然后继续使用它?

  16. 16

    在 PHP 中,如何只创建一次数据库连接并从 JavaScript 到 Ajax 多次使用它?

  17. 17

    如何使用Selenium Webdriver?

  18. 18

    如何使用PhantomJS使用Selenium Webdriver打开附加链接?

  19. 19

    如何使用phantomJS使用Selenium WebDriver打开附加链接?

  20. 20

    PHP如何使用它?

  21. 21

    如何在元素属性中使用一次绑定或一次角度

  22. 22

    如何使用鼻子测试测试一次循环(一次)(Python 2.7)

  23. 23

    如何一次动态查询一次使用php在mysql中插入多条记录?

  24. 24

    如何使用“setInterval()”每秒更新一次时间而不会每秒闪烁一次?

  25. 25

    如何使用Selenium WebDriver打开新标签页?

  26. 26

    如何使用Selenium WebDriver打开网站并填写输入

  27. 27

    使用Selenium Webdriver时如何打开普通的chrome或Firefox窗口?

  28. 28

    切换菜单,一次使用纯JavaScript打开一个菜单

  29. 29

    使用哈希映射一次打开一个JInternalFrame实例

热门标签

归档