微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Phantomjs 浏览器 element.getText() 为空

如何解决Phantomjs 浏览器 element.getText() 为空

我有一个简单的测试,它将 element.getText() 值打印到控制台。如果我使用 ChromeDriver 运行代码,它可以正常工作。元素可见,我也在等待元素可见,并且在 element.isdisplayed() 调用之前测试 getText()。但是如果我用 Phantomjs 驱动程序运行它,getText() 的结果是一个空字符串。代码如下:

public void test() throws InterruptedException {
    openPage();

    WebElement header = driver.findElement(By.id("header"));

    new webdriverwait(driver,5).until(ExpectedConditions.visibilityOf(header));

    System.out.println(header.isdisplayed());
    System.out.println(header.getText());
}

这个元素有一个 CSS 转换。

这是网页 https://tatrytec.eu/,它是 Tatrytec.eu 的主标题

谁能告诉我问题出在哪里?

解决方法

https://phantomjs.org/ ,该项目目前已暂停。 chrome 和 phantom 使用不同的渲染引擎,所以现在使用 phantomjs 没有意义,改用 chrome headless

https://www.chromium.org/blink

以前像 phantomjs 这样的无头浏览器曾经使用 webkit 渲染引擎,但现在 chrome 具有内置的无头支持并使用相同的渲染引擎闪烁

https://developers.google.com/web/updates/2017/04/headless-chrome#:~:text=Headless%20Chrome%20is%20similar%20to,the%20latest%20version%20of%20Blink

另请注意,w3c 对于非无头 chrome 是默认开启的,但对于无头 chrome 是错误的并且使用 JSONwire 协议,这不会影响测试质量,但仅供参考

https://stackoverflow.com/a/65841695/6793637

截至 2021 年 2 月

https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925

Headless chrome 不支持首选项设置

您可以将无头铬用作:

brew info --json=v1 --installed | jq -r "map(select(.installed[].poured_from_bottle | not) | .name) | unique | .[]"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。