【问题标题】:Selenium Webdriver warning - Invalid token "screen"Selenium Webdriver 警告 - 令牌“屏幕”无效
【发布时间】:2012-01-09 12:57:45
【问题描述】:

我是 Selenium Webdriver 的新手。当我使用此代码时,我得到了输出和警告。请帮助我,我怎么能忽略这个警告。我的代码是:

package com.webdriver.Webdriver;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class Example {

    public static void main(String[] args) {
        // Create a new instance of the html unit driver
        // Notice that the remainder of the code relies on the interface,
        // not the implementation.
        WebDriver driver = new HtmlUnitDriver();
        // And now use this to visit Google
        driver.get( "https://mobile.twitter.com/andres/about" );
        // Find the text input element by its name
        //WebElement element = driver.findElement(By.xpath("//title"));
        WebElement element = driver.findElement(By.xpath("//div[@class='footer']/strong/a"));
        String s=element.getText();
        // Enter something to search for
        //element.sendKeys( "Cheese!" );
        // Now submit the form. WebDriver will find the form for us from the element
        //element.submit();
        // Check the title of the page
        System.out.println( "Page title is: " + driver.getTitle());
        System.out.println(s);
        driver.quit();
        }

}

警告:

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 错误

警告:CSS 错误:[1:1724] @media 规则中的错误。无效的令牌“屏幕”。期待以下之一: , , .

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 警告

警告:CSS 警告:[1:1724] 忽略整个规则。

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 错误

警告:CSS 错误:[1:1908] @media 规则中的错误。无效的令牌“屏幕”。期待以下之一: , , .

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 警告

警告:CSS 警告:[1:1908] 忽略整个规则。

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 错误

警告:CSS 错误:[1:3437] @media 规则错误。无效的令牌“屏幕”。期待以下之一: , , .

2011 年 11 月 30 日下午 2:54:23 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 警告

警告:CSS 警告:[1:3437] 忽略整个规则。

页面标题是:Twitter 立即刷新

谢谢

【问题讨论】:

    标签: java selenium webdriver


    【解决方案1】:

    您需要实现自己的HtmlUnitDriver 子类,然后将cssErrorHandler 设置为SilentCssErrorHandler 实例。

    这可以通过内部类轻松完成,覆盖构造函数并设置错误处理程序:

    import com.gargoylesoftware.htmlunit.SilentCssErrorHandler;
    import org.openqa.selenium.htmlunit.HtmlUnitDriver;
    
    public abstract class MyBaseTestCase {
        protected HtmlUnitDriver webDriver = new SilentHtmlUnitDriver();
    
        protected class SilentHtmlUnitDriver extends HtmlUnitDriver {
            SilentHtmlUnitDriver() {
                super();
                this.getWebClient().setCssErrorHandler(new SilentCssErrorHandler());
            }
        }
    }
    

    然后您可以扩展这个基类,并访问 webDriver 对象并享受无垃圾邮件的输出!

    【讨论】:

      【解决方案2】:

      https://mobile.twitter.com/andres/about 页面的 CSS 文件包含意外/不受支持/损坏的代码。

      您有两个选择:将 DefaultCssErrorHandler 替换为 SilentCssErrorHandler 或将其替换为仅过滤这些特定错误的默认实现(将错误消息与您在输出中看到的字符串匹配)。

      要安装您的自定义处理程序:

      HtmlUnitDriver driver = new HtmlUnitDriver(); // Can't use generic driver anymore
      driver.getWebClient().setCssErrorHandler(handler); // install your handler
      

      【讨论】:

      • getWebClient() 不是公共方法。
      • 上面的代码是我项目的复制粘贴。如果该方法不再是公开的,要么获取源代码并将其公开,要么使用反射来调用它。 sigh 当单元测试库与你争吵时,你不也讨厌它吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2014-08-25
      • 2019-10-20
      • 2017-02-12
      • 1970-01-01
      • 2018-05-26
      • 2018-05-21
      相关资源
      最近更新 更多