标签: webdriver

是否有适用于.NET的HtmlUnitDriver?

我正在使用Selenium的WebDriver为我正在进行自我教育的ASP.NET MVC应用程序运行一些SpecFlow测试.

使用FirefoxDriver,ChromeDriver等所有需要很长时间来运行,它实际上是非常令人沮丧的使用(在我看来).

我读过一个HtmlUnitDriver据说比基于浏览器的驱动程序快得多的内容; 但我似乎无法在.NET客户端库中找到一个版本(只有Java).那里有.NET版本吗?

.net selenium webdriver htmlunit-driver

24
推荐指数
1
解决办法
1万
查看次数

Selenium webdriver无法单击页面外的链接

我遇到了Selenium WebDriver的问题.我尝试点击窗口页面外的链接(你需要向上滚动才能看到它).我目前的代码是相当标准的:

menuItem = driver.findElement(By.id("MTP"));
menuItem.click();
// I also tried menuItem.sendKeys(Keys.RETURN);
Run Code Online (Sandbox Code Playgroud)

我知道我可以向上滚动,在这种情况下它会起作用.但是如果你有很长的项目列表,你不一定知道你需要向下滚动多远.

有没有办法点击不在页面可见部分的链接(但滚动时会显示)?

作为旁注,我正在使用Firefox,但我打算也使用IE7/8/9和Chrome.

任何帮助将不胜感激.

编辑:我担心我不能提供源代码,因为我工作的公司不允许它,但我可以给出我想点击的链接的代码:

<div class="submenu">
  <div id="MTP">Link title</div>
</div>
Run Code Online (Sandbox Code Playgroud)

链接可见时,完全相同的代码有效,只有当链接不可用时才能使用.

编辑2:实际上,奇怪的是,它不会引发任何异常,只是转到下一条指令.所以基本上,会发生什么:

menuItem = driver.findElement(By.id("MTP")); // no exception
menuItem.click();  // no exception
//... some code ensuring we got to the next page: timeout reached
driver.findElement(By.id("smLH")).click(); // NoSuchElementException, as we're on the wrong page.
Run Code Online (Sandbox Code Playgroud)

java selenium scroll webdriver click

24
推荐指数
5
解决办法
3万
查看次数

如何在python webdriver中为phantomjs/ghostdriver设置代理?

我试图弄清楚如何通过HTTP代理路由我的请求.

我正在初始化这样的webdriver:

user_agent = 'my user agent 1.0'
DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = user_agent
driver = webdriver.PhantomJS()
Run Code Online (Sandbox Code Playgroud)

我已经浏览了文档和源代码,似乎无法通过webdriver找到使用phantomjs代理服务器的方法.

有什么建议?

python proxy webdriver phantomjs ghostdriver

24
推荐指数
3
解决办法
3万
查看次数

如何使用selenium或webdriver处理测试自动化中的文件上载

我认为每个人如何使用Webdriver进行测试自动化必须意识到它对Web开发的巨大优势.

但如果文件上传是您的网络流量的一部分,那么存在一个巨大的问题.它不再是测试自动化.浏览器的安全限制(调用文件选择)实际上使得无法自动化测试.

Afaik唯一的选择是让webdriver单击文件上传按钮,睡眠线程,让开发人员/测试人员手动选择文件,然后执行其余的Web流程.

如何解决这个问题,有没有解决方法呢?因为它真的不能这样做.这没有意义.

这是我所知道的浏览器安全限制不适用的唯一情况:

<script language=javascript>   
  function window.onload(){   
          document.all.attachment.focus();   
          var WshShell=new ActiveXObject("WScript.Shell")   
          WshShell.sendKeys("D:\MyFile.doc")
  }   
</script>
Run Code Online (Sandbox Code Playgroud)

java selenium automated-tests file-upload webdriver

23
推荐指数
1
解决办法
5万
查看次数

如何使用Selenium(任何版本)下载图像?

我想知道,如何使用selenium/webdriver下载页面的图像.假设需要用户会话来下载图像,因此具有纯URL是没有用的.任何示例代码都非常受欢迎.

selenium webdriver

23
推荐指数
5
解决办法
4万
查看次数

Selenium中的页面对象模型最佳实践

在对页面对象进行建模时,如何处理具有表单和大约50个输入字段的页面?这里的最佳做法是什么?

您是否会为每个输入操作创建一个页面对象并编写一个单独的函数?或者你会写一个函数,哪些参数传递给它并输入文本?

例如

public void enterFirstName(String firstName) {
    driver.type("firstNameField", firstName);
}

public void enterSecondName(String secondName) {
    driver.type("secondNameField", secondName);
}
Run Code Online (Sandbox Code Playgroud)

要么

public void fillInForm(String inputFieldName, String text) {
    driver.type(inputFieldName, text);
}
Run Code Online (Sandbox Code Playgroud)

我可以在第一个模型中看到,在编写测试时,测试更具描述性,但如果页面包含太多输入字段,则创建页面对象会变得很麻烦.

使用Selenium WebDriver的页面对象功能自动化测试最佳实践中构建硒测试时,这篇文章也非常有趣

java selenium webdriver object pageobjects

23
推荐指数
2
解决办法
2万
查看次数

如何检查元素是否包含特定的类属性

如何检查selenium web元素是否包含特定的css类.

我有这个html li元素

<li class="list-group-item ng-scope active" ng-repeat="report in lineageController.reports" ng-click="lineageController.activate(report)" ng-class="{active : lineageController.active == report}">
Run Code Online (Sandbox Code Playgroud)

正如您在class属性中看到的那样,有一个活动类.

我的问题是我有这个元素,我想根据类属性是否具有其他的"活动"值进行检查,然后使用xpath更优雅的解决方案.

我怎样才能做到这一点?

css java selenium webdriver selenium-webdriver

23
推荐指数
2
解决办法
4万
查看次数

Selenium 2 Webdriver和IE 9安全证书

我有一些针对Firefox和Internet Explorer 9的Selenium 2 Webdriver测试用例.当我在IE9(Windows 7 64位)上访问https URL时,我得到"此网站的安全证书存在问题".此时测试挂起并最终失败.我试过了:

  • 让Selenium点击"继续浏览此网站(不推荐)".链接.这不能完成,因为此错误页面不是您的常用页面.与JavaScript相同 - 它不会执行.
  • 我尝试添加注册表项
    HKEY_LOCAL_MACHINE\SOFTWARE \微软\的Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
    防止证书错误页面无法显示-没有工作.可能是因为我在Windows 7上使用IE9.
  • 按照这个建议,我尝试使用browsermob代理,但是那里的文档很少,我无法解决它.
  • 最后,我没有管理员访问我的电脑 - 例如没有访问组策略.Selenium 2 Webdriver在Firefox上运行良好.我在IE Internet选项中启用了所有安全区域,如果我在其他URL(http)上运行测试,则没有问题.

    有人有解决这个问题的方法吗?有没有人现在热门使用browsermob代理(或任何其他代理)有效地克服这个问题?

    谢谢,达摩

    webdriver internet-explorer-9 selenium-webdriver

    22
    推荐指数
    2
    解决办法
    3万
    查看次数

    如何使用WebDriver(Selenium 2)检查dom是否有类?

    我对Selenium很新,所以我很抱歉这是一个愚蠢的问题.我已成功将IntelliJ(Play!框架)与Selenium连接起来,并使用firefoxDrivers创建了一些测试.

    我正在尝试检查页面是否已经过正确验证.

    长话短说,我选择了这样一个元素:

    WebElement smallDecel = firefoxDriver.findElement(By.cssSelector("#configTable tr:nth-child(2) td .playerDecelInput"));
    
    Run Code Online (Sandbox Code Playgroud)

    我做了一些进一步的操作(清除并更改值,提交'表单'),然后我想检查输入所在的TD是否给了另一个类.

    所以,问题是 - 是否有一种简单的技术可以用来确定WebElement/DOM是否指定了类?

    c# selenium webdriver

    22
    推荐指数
    3
    解决办法
    2万
    查看次数

    使用WebDriver暂时绕过隐式等待

    当使用隐式等待时,正如这里所建议的那样,我仍然有时想要断言元素的直接不可见性或不存在.

    换句话说,我知道应该隐藏一些元素,并且希望我的测试能够快速地进行断言,而不需要花费几秒钟因为(否则有用)隐式等待.

    我试过的一件事就是像这样的辅助方法:

    // NB: doesn't seem to do what I want
    private boolean isElementHiddenNow(String id) {
        WebDriverWait zeroWait = new WebDriverWait(driver, 0);
        ExpectedCondition<Boolean> c = invisibilityOfElementLocated(By.id(id));
        try {
            zeroWait.until(c);
            return true;
        } catch (TimeoutException e) {
            return false;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是在上面的代码中,调用until()在隐式等待时间过去后才返回,即它不能完成我想要的操作.

    到目前为止,这是我发现的唯一方法:

    @Test
    public void checkThatSomethingIsNotVisible()  {
        turnOffImplicitWaits();
        // ... the actual test
        turnOnImplicitWaits();
    }
    
    Run Code Online (Sandbox Code Playgroud)

    ...例如turnOffImplicitWaits(),Selenium超类中的助手:

    protected void turnOffImplicitWaits() {
        driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
    } …
    Run Code Online (Sandbox Code Playgroud)

    java selenium webdriver wait selenium-webdriver

    22
    推荐指数
    3
    解决办法
    1万
    查看次数