【问题标题】:Looping through a list with selenium用硒循环列表
【发布时间】:2021-04-19 23:43:02
【问题描述】:

我有一个名为 dhurl 的列表,其中包含 30 个网址。我正在尝试循环遍历 selenium Web 驱动程序代码以更改 URL 每次循环以使用不同的 URL 执行相同的操作(每个 URL 中都有不同的项目)。

我目前的代码:

对于我的列表:

        //Loop which adds keyName and tokenUrl to list
        foreach (JObject item in jArray)
        {
            var keyNameSm = (string)item.SelectToken("keyName");
            var keyName = keyNameSm.Replace("sm-", "");
            var tokenUrl = (string)item.SelectToken("token");
            dhurl.Add("https://" + keyName + ".bewitchedexample.cloud/?sig=" + tokenUrl);
        }

我的 Selenium 网络驱动程序代码:

        public void LaunchingDH()
    {
        driver = GetChromeDriver();
        string url = "https://harry.bewitchedexample.cloud/?sig=433435456464546";
        Thread.Sleep(1000);
        driver.FindElement(By.ClassName("terms-checkbox")).Click();
        driver.FindElement(By.ClassName("continue-button")).Click();
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
        driver.Close();
    }

上面的 selenium 代码 (https://harry.bewitchedexample.cloud/?sig=433435456464546";) 中的 url 是硬编码的,我想在每次循环时将该 URL 更改为 dhurl。

我目前的代码:

    public void LaunchDH(List<string> dhurl)
    {
        foreach (string url in dhurl)
        {
            driver = GetChromeDriver();
            string url = "https://harry.bewitchedexample.cloud/?sig=433435456464546";
            driver.Navigate().GoToUrl(url);
            Thread.Sleep(1000);
            driver.FindElement(By.ClassName("terms-checkbox")).Click();
            driver.FindElement(By.ClassName("continue-button")).Click();
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
            driver.Close();
        }
    }

有什么建议可以让我完成这项工作吗?

【问题讨论】:

    标签: c# list selenium loops selenium-webdriver


    【解决方案1】:

    使用下面的代码:

    JObject URLList = JObject.Parse(@"{
       URLS: [
        {'URLName': 'https://www.google.com/'},
        {'URLName': 'https://www.facebook.com'},
        {'URLName': 'https://uk.yahoo.com/?p=us'},
      ]
    }");
    
    var dhurl = new List<string>();
    foreach (JObject url in URLList)
        {
            string targetURL = (string)URLList.SelectToken("URLS[url].URLName");
            dhurl.Add(targetURL);
        },
    public void LaunchDH(List<string> dhurl)
        {
            foreach (string url in dhurl)
            {
                driver = GetChromeDriver();
                driver.Navigate().GoToUrl(url);
                Thread.Sleep(1000);
                driver.FindElement(By.ClassName("terms-checkbox")).Click();
                driver.FindElement(By.ClassName("continue-button")).Click();
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
                driver.Close();
            }
        }
    

    【讨论】:

      【解决方案2】:

      取出 Selenium 部分和其他所有内容,这里的主要任务是在每个循环中将一个项目从 list 传递到 string 并对其执行一些 Selenium 操作。

      假设您已经准备好您的list 网址,下面这个简化的案例只是打印到控制台,所以您可以看到结果:

      var url_list = new List<string>()
      {
          "URL_1", "URL_2", "URL_3"
      
      };
      
      foreach(string row in url_list)
      {
          string url = $"https://{row}";
          Console.WriteLine(url);
      }
      

      打印:

      https://URL_1
      https://URL_2
      https://URL_3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-01
        • 2020-11-27
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        • 2022-11-09
        • 1970-01-01
        • 2012-12-04
        相关资源
        最近更新 更多