所以我使用Firefox selenium webdriers获得了这个c#winform.
基本上我需要它来检查一个元素是否存在以及它是否没有点击另一个元素.如果有视频并且在观看之后它变为W_VIEWED
这是我到目前为止所得到的
driver.FindElement(By.XPath("//div[@class='video']/a")).Click();
else {
          driver.FindElement(By.XPath("//div[@class='W_VIEWED']/a")).Click();
     }
错误3只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句242
一种新的c#selenium.谢谢你的帮助.
Pra*_*ari 33
您可以检查元素退出或不使用
bool isElementDisplayed = driver.findElement(By.xpath("element")).isDisplayed()
请记住,findElement如果找不到元素则抛出异常,因此您需要正确处理它.
在我的一个应用程序中,我通过检查单独函数中的元素来处理异常,
    private bool IsElementPresent(By by)
    {
        try
        {
            driver.FindElement(by);
            return true;
        }
        catch (NoSuchElementException)
        {
            return false;
        }
    }
通话功能,
            if (IsElementPresent(By.Id("element name")))
            {
                //do if exists
            }
            else
            {
                //do if does not exists
            }
小智 18
您可以使用带有"s"的FindElements来确定它是否存在,因为FindElement会导致异常.如果FindElements未返回元素,则返回空列表.
List<IWebElement> elementList = new List<IWebElement>();
elementList.AddRange(driver.FindElements(By.XPath("//input[@att='something']")));
if(elementList.Count > 0)
{
 //If the count is greater than 0 your element exists.
   elementList[0].Click();
}
小智 7
所以我最近想出了另一种方法,这种方式更快.如果您的元素具有唯一ID或某个属性,该属性不存在于页面上的其他位置,则可以检查PageSource.
driver.PageSource.Contains("UniqueID");
它会检查页面以查看是否存在ID或其他唯一文本.这种情况几乎是瞬间发生的,而不是使用需要约20秒的Try/Catch语句.FindElements也需要很长时间才能运行.
| 归档时间: | 
 | 
| 查看次数: | 66232 次 | 
| 最近记录: |