c#硒如果还有检查

c#硒如果还有检查,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我将C#与Selenium Web驱动程序一起使用。如果不满足“如果”条件,我想打破循环。我的代码如下。如果满足“If”条件,我想继续循环,直到它不满足 for (int i = 0; i < Numara.Items.Count; i++) { driveri.Navigate().GoToUrl("https://web.whatsapp.com/send?phone=" + Numara.Items[i].ToString() +

我将C#与Selenium Web驱动程序一起使用。如果不满足“如果”条件,我想打破循环。我的代码如下。如果满足“If”条件,我想继续循环,直到它不满足

 for (int i = 0; i < Numara.Items.Count; i++)
        {

                driveri.Navigate().GoToUrl("https://web.whatsapp.com/send?phone=" + Numara.Items[i].ToString() + "&text=");
                Thread.Sleep(3000);
                Actions act = new Actions(driveri);
                Thread.Sleep(500); 
            IReadOnlyCollection<IWebElement> rows = driveri.FindElements(By.XPath("//*[@id=\"app\"]/div/span[3]/div/div/div/div/div/div/div[2]/div"));

            if (rows == null)
            {

               ...continuation
            }
            else
            {
               ...if there is an error

                rows.ElementAt(0).Click();
            } 
        }
        }
for(int i=0;i
OP的问题描述相当混乱

  • 我想在c#中使用selenium来关闭失败的循环

  • 如果出现错误,我想单击链接并继续 循环

  • 如果要在遇到错误后立即结束循环,请使用
    中断
    。 另一方面,使用
    continue
    将跳过其余语句并转到循环的下一次迭代

    else
    {
       ...if there is an error
    
        rows.ElementAt(0).Click();
        break;
    } 
    

    但是,在远离主题的时候,我注意到了XPATH的绝对用法。使用绝对值并不可取,最好使用相对简洁和简短的xpath。对webapp的更新肯定会破坏脚本的xpath。

    这就是您所要求的

    if (rows == null)
    {
         continue;
    }
    else
    {
         rows.ElementAt(0).Click();
         break;
    } 
    
    不过,使用while循环实现会更好地进行代码实践,效率更高

        IReadOnlyCollection<IWebElement> rows = null;
    
        bool rowsFound = false;
        while (!rowsFound)
        {
             rows = driveri.FindElements(By.XPath("//*[@id=\"app\"]/div/span[3]/div/div/div/div/div/div/div[2]/div"));
    
             if(rows!=null)
             {
                 rowsFound = true;
             }
        } 
    
     rows.ElementAt(0).Click();
    
    IReadOnlyCollection行=null;
    bool rowsFound=false;
    而(!rowsFound)
    {
    rows=driveri.findelelements(By.XPath(“/*[@id=\”app\“]/div/span[3]/div/div/div/div/div/div/div[2]/div”);
    如果(行!=null)
    {
    rowsFound=true;
    }
    } 
    rows.ElementAt(0).单击();
    
    在一个不相关的主题上,除非绝对必要,否则使用Thread.Sleep()也是不好的做法。大多数情况下,如果不是所有时间,您都希望使用WebDriverWait实现。您可以在此处了解更多信息: