Selenium:在TeamCity

时间:2016-06-03 07:54:19

标签: c# selenium teamcity

我知道这个问题有很多问题"无法找到元素"但这些答案都不适合我。

我的测试示例如下:

driver.FindElementById("OldPassword").Clear();
driver.FindElementById("OldPassword").SendKeys("Admin666*");

当我在我的计算机上运行测试时,它运行良好但在TeamCity代理失败后出现此错误:

  

测试方法CLSTesting.AccountControllerTests.TestManagePasswordChrome   抛出异常:OpenQA.Selenium.NoSuchElementException:没有这样的   element:无法定位元素:   {"方法":" ID""选择器":" OldPassword更改"}

添加隐式等待或等到元素存在不起作用,并且没有iframe可以打开。我试图更改find​​元素方法,但我再次遇到相同的错误。似乎这个错误是随机的,但大多数测试都失败了。这是html示例:

<div class="form-group">
     <label class="col-md-2 control-label" for="OldPassword">Current password:</label>
     <div class="col-md-10">
            <input class="form-control" id="OldPassword" name="OldPassword" type="password" />
     </div>
</div>

你知道问题出在哪里吗?谢谢!

UPDATE - 我用于等待元素的扩展方法:

public static bool WaitUntilElementIsPresent(this IWebDriver driver, By by, int timeout = 20)
        {
            for (var i = 0; i < timeout; i++)
            {
                if (driver.ElementIsPresent(by)) return true;
                Thread.Sleep(500);
            }
            return false;
        }

public static bool ElementIsPresent(this IWebDriver driver, By by)
        {
            try
            {
                return driver.FindElement(by).Displayed;
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                return false;
            }
        }

0 个答案:

没有答案