C# 如何在SeleniumWebDriver下测试页面上的元素是否为#
我在数不清的网页上搜索,并没有得到一个很好的答案。我正在使用C#使用Selenium 2.30 我试过了C# 如何在SeleniumWebDriver下测试页面上的元素是否为#,c#,selenium-webdriver,C#,Selenium Webdriver,我在数不清的网页上搜索,并没有得到一个很好的答案。我正在使用C#使用Selenium 2.30 我试过了 if (browser.FindElement(By.XPath("xpath")).Displayed) 我试过了 if (browser.FindElements(By.XPath("xpath")).Count !=0) 而且 IWebElement element = browser.FindElement(By.XPath("xpath")); if (element.Disp
if (browser.FindElement(By.XPath("xpath")).Displayed)
我试过了
if (browser.FindElements(By.XPath("xpath")).Count !=0)
而且
IWebElement element = browser.FindElement(By.XPath("xpath"));
if (element.Displayed == true)
它们只在元素存在时工作,如果不存在,它将拉出异常。但这不是必须的例外,我在另一个{}语句中有一些东西来处理它,我不希望webdriver在第一点就阻止我
我现在正在做的是
IWebElement element = null;
try
{
element = browser.FindElement(By.XPath("xpath"));
}
catch
{
}
if (element != null)
到目前为止,这种方法是有效的,但我认为这不是最好的解决方案。如果有人能给我一个更好的方法,我将不胜感激。您这样做是可以接受的,但有时您会在执行之前的操作(例如导航到页面)后尝试运行此操作,通常最好给出一个超时值并使用以下WebDriverWait方法:
WebDriverWait _wait = new WebDriverWait(_driver, new TimeSpan(0, 0, timeout));
element = _wait.Until(x => x.FindElement(By.XPath(searchAttribute.attributeValue)));
这允许您等待元素出现在页面上,直到超时值为止(我在应用程序I测试中使用5秒)。但是,简单地说,如果(element==null)没有找到,您可以使用
的代码。如果使用WebDriverWait,如果不希望在超时后引发异常,则必须捕获异常。可以接受您的操作方式,但有时您会在执行之前的操作(例如导航到页面)后尝试运行此操作通常最好给出一个超时值,并使用以下WebDriverWait方法:
WebDriverWait _wait = new WebDriverWait(_driver, new TimeSpan(0, 0, timeout));
element = _wait.Until(x => x.FindElement(By.XPath(searchAttribute.attributeValue)));
这允许您等待元素出现在页面上,直到超时值为止(我在应用程序I测试中使用5秒)。但是,简单地说,如果(element==null)
没有找到,您可以使用的代码。如果使用WebDriverWait,如果不希望在超时后引发异常,则必须捕获异常。如果使用显式等待,还可以查看预封装的预期条件列表:感谢Nashibukasan。也许这是一个愚蠢的问题,但是WebDriverWait和隐式Wait之间有什么区别?另一个问题是,为什么我不能使用if(browser.FindElements(By.XPath(“XPath”)).Count!=0)隐式Wait
是一个设置为用于所有后续WebElement
搜索的超时WebDriverWait
可以传递不同的超时值,并可用于不同的预期条件
。我相信你可以用你的Count!=0
code,但是您仍然可以从使用其中一个等待中获益,否则,如果元素尚未加载,您将发现它很快返回0计数。我遇到了一个类似“WebDriver.dll中发生了类型为“OpenQA.Selenium.WebDriverException”的未处理异常”的异常。其他信息:使用.Count!时,对URL“”的远程WebDriver服务器的HTTP请求在60秒后超时0如果使用显式等待,还可以查看预先设定的预期条件列表:谢谢Nashibukasan。也许这是一个愚蠢的问题,但是WebDriverWait和隐式Wait之间有什么区别?另一个问题是,为什么我不能使用if(browser.FindElements(By.XPath(“XPath”)).Count!=0)隐式Wait
是一个设置为用于所有后续WebElement
搜索的超时WebDriverWait
可以传递不同的超时值,并可用于不同的预期条件
。我相信你可以用你的Count!=0
code,但是您仍然可以从使用其中一个等待中获益,否则,如果元素尚未加载,您将发现它很快返回0计数。我遇到了一个类似“WebDriver.dll中发生了类型为“OpenQA.Selenium.WebDriverException”的未处理异常”的异常。其他信息:使用.Count!时,对URL“”的远程WebDriver服务器的HTTP请求在60秒后超时0