C# 如何检查我的for each循环中是否存在元素
我需要检查一个元素是否基本存在,如果存在,我想打开一个url,然后返回到原始页面,然后继续原样编写。我尝试了一些方法,但他们不断抛出异常。我在有问题的行中添加了注释。我就是想不出如何实现它C# 如何检查我的for each循环中是否存在元素,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我需要检查一个元素是否基本存在,如果存在,我想打开一个url,然后返回到原始页面,然后继续原样编写。我尝试了一些方法,但他们不断抛出异常。我在有问题的行中添加了注释。我就是想不出如何实现它 foreach (string line in File.ReadLines(@"C:\\tumblrextract\\in7.txt")) { if (line.Contains("@"))
foreach (string line in File.ReadLines(@"C:\\tumblrextract\\in7.txt"))
{
if (line.Contains("@"))
{
searchEmail.SendKeys(line);
submitButton.Click();
var result = driver.FindElement(By.ClassName("invite_someone_success")).Text;
if (driver.FindElements(By.ClassName("invite_someone_failure")).Count != 0)
// If invite_someone_failure exists open this url
driver.Url = "https://www.tumblr.com/lookup";
else
// Then back to following page and continue searchEmail.SendKeys(line); submitButton.Click(); write loop
driver.Url = "https://www.tumblr.com/following";
using (StreamWriter writer = File.AppendText("C:\\tumblrextract\\out7.txt"))
{
writer.WriteLine(result + ":" + line);
}
}
}
您使用的是selenium,您的代码可能会在某些代码行中抛出异常——同时考虑到我不知道tumblr网站及其html结构 但首先: 您处于foreach循环中,每次至少加载一次页面时,所有元素都会过时,因此以下几行: var searchEmail=driver.FindElement(By.Name(“follow_this”) var submitButton=driver.FindElement(By.Name(“submit”) 在下一次执行中可能会过时。(ElementStaleException)。 将它们也粘贴到以下位置: driver.Url=“” 第二: 使用FindElement方法时,必须确保元素存在,否则还会引发ElementNotFoundException var result=driver.FindElement(By.ClassName(“邀请某人成功”)).Text var isThere=driver.FindElements(By.ClassName(“邀请某人\失败”) dotNet selenium客户端有一个静态(我相信)类来帮助实现预期条件 在尝试读取某个元素的文本之前,可以使用它来检查该元素是否存在 我特别邀请您了解selenium的工作原理
玩得开心。你有什么例外?可能是空引用异常。请考虑在代码中添加NULL检查,用于以下
if(By.ClassName("invite_someone_success") != null){
var result = driver.FindElement(By.ClassName("invite_someone_success")).Text;
}
以上不是经过验证/精确的代码,只是一个伪代码我没有例外,我只是想弄清楚如何实现我发布的代码中的两行注释。如果存在invite\u someone\u失败,请加载url,然后返回原始url并继续读/写。获取异常,我更新了帖子中的代码。没有这样的元素:无法找到元素:{“方法”:“类名”,“选择器”:“邀请某人\u成功”}我的if/else语句似乎根本不起作用。为什么不先将元素计数/文本保存在变量中,并验证它们是否获取所需的值,然后将其传递给if-else?如果类名似乎不起作用,那么为什么不尝试使用XPath搜索元素?如果您需要帮助,为什么不发布HTML源代码?