【问题标题】:Selenium tests do not work on IE8Selenium 测试不适用于 IE8
【发布时间】:2015-03-05 05:06:18
【问题描述】:

为了测试一些遗留页面,我需要针对IE8 执行一些测试用例。这些相同的测试用例有效地针对IE10/11, FF, Chrome 运行,没有任何问题。

public void TypePassword(string password)
{
    var element = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(
        ExpectedConditions.ElementIsVisible(By.XPath("//input[@id='txtPassword']")));

    //I also tried with just id and cssselector

    element.Clear();
    element.SendKeys(password);
}

我也试过了

public void TypePassword(string password)
{
    Password.Clear();
    Password.SendKeys(password);
}

有趣的是,

public void TypeUsername(string username)
{
    Username.Clear();
    Username.SendKeys(username);
}

始终正常工作。

The IE driver configuration
var options = new InternetExplorerOptions { EnableNativeEvents = false};
options.AddAdditionalCapability("EnsureCleanSession", true);
Driver = new InternetExplorerDriver(options);

似乎我缺少一些特定于 IE8 的配置。

另外,确认缩放级别和保护模式设置

【问题讨论】:

    标签: selenium selenium-webdriver internet-explorer-8 webdriver ie8-compatibility-mode


    【解决方案1】:

    你试过 JavascriptExecutor 吗?

    var element = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//input[@id='txtPassword']")));
    ((JavascriptExecutor)Driver).executeScript("arguments[0].value='"+password+"'", element);
    

    【讨论】:

    • 感谢您的回答。那不是一个选择。我不想只为 IE8 重写整个测试套件。
    • 感谢您的评论。我知道会的。但是,问题是我只是不想重写现有的测试用例。我有超过 300 多个测试用例。现在,我必须重新审视所有这些并使用我不想要的 JavaScript 调整它们。
    【解决方案2】:

    很难找到元素存在,

    所以你可以使用 do while 循环获得元素计数 >1,

    do
    {
        Thread.Sleep(500);
    }while(driver.FindElements(By.Id("IDNAME")).Count>0);
    

    除非直到,元素的计数得到,这个do循环将执行并等待元素也可见

    【讨论】:

      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多