c#硒如果还有检查
我将C#与Selenium Web驱动程序一起使用。如果不满足“如果”条件,我想打破循环。我的代码如下。如果满足“If”条件,我想继续循环,直到它不满足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() +
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的问题描述相当混乱
中断
。
另一方面,使用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实现。您可以在此处了解更多信息: