首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让Selenium更好地使用Bootstrap fade fade的建议?

让Selenium更好地使用Bootstrap fade fade的建议?
EN

Stack Overflow用户
提问于 2012-07-19 00:37:58
回答 7查看 5.5K关注 0票数 13

我正在使用Cucumber (带有Selenium),并且恰好在我的应用程序中使用了Twitter Bootstrap modals。

在运行黄瓜测试时,我得到了一个"Selenium::WebDriver::Error::MoveTargetOutOfBoundsError"错误。经过多次搜索、调试和普遍的绝望,我得出结论,这与我的Bootstrap modals中"fade"参数的使用有关。如果我使用"fade",就会抛出错误:

代码语言:javascript
运行
复制
<div class="modal hide fade" id="info-share-edit-modal" style="display: none;">
  .
  .
  .
</div>

如果我删除了"fade",那么Selenium就充满了快乐,我的测试也变得清晰起来:

代码语言:javascript
运行
复制
<div class="modal hide" id="info-share-edit-modal" style="display: none;">
  .
  .
  .
</div>

因此,我现在正在从我的各种模态中删除"fade"。但是,这让我很难过,因为我喜欢淡出效果。

还有没有人在Bootstrap modals中使用Selenium和fade时遇到过问题?如果是这样的话,有没有什么聪明的方法可以让两者很好地合作呢?

顺便说一下(不确定这是否重要),我是Rails 3.2.3、Firefox 13.0.1和Ubuntu 12.04LTS。

EN

回答 7

Stack Overflow用户

发布于 2013-01-10 09:54:55

我做了一个快速测试,插入了一个WebDriverWait,用于查看模式的不透明性。它似乎是有效的,但时间会证明(至少对我来说)这是一个间歇性的问题。下面是我的Java实现。

代码语言:javascript
运行
复制
//Ensure the modal is done animating
new WebDriverWait(driver, 5).until(
    new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(WebDriver webDriver) {         
            return webDriver.findElement(By.id("videoModal")).getCssValue("opacity").equals("1");
        }
    }
);
票数 8
EN

Stack Overflow用户

发布于 2016-03-08 23:18:41

我用这种方式(使用c#)解决了这个问题。它速度很快,一次也没有失败过。

代码语言:javascript
运行
复制
public static void WaitForModal(this RemoteWebDriver driver)
{
    using (driver.NoImplicitWait())
    {
        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
        wait.Until(d => d.FindElements(By.ClassName("modal-backdrop").Count == 0);
    }
}

NoImplicitWait用于临时禁用驱动程序隐式等待。

代码语言:javascript
运行
复制
public static NoImplicitWait NoImplicitWait(this IWebDriver driver)
{
    return new NoImplicitWait(driver);
}

public sealed class NoImplicitWait : IDisposable
{
    private readonly IWebDriver _driver;

    public NoImplicitWait(IWebDriver driver)
    {
        _driver = driver;
        _driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(0));
    }

    public void Dispose()
    {
        _driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-12-15 12:27:05

添加一个标志,这样在测试环境中它就不会褪色,但在其他所有环境中都会褪色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11546217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档