【问题标题】:I'm trying to take a screenshot of an element with selenium-webdriver, but UnsupportedOperationError was thrown?我正在尝试使用 selenium-webdriver 截取元素的屏幕截图,但抛出了 UnsupportedOperationError?
【发布时间】:2016-07-05 04:48:39
【问题描述】:

我当前的代码如下所示。

var webdriver = require('selenium-webdriver'),
until = webdriver.until,
By = webdriver.By,
fs = require('fs');

var driver = new webdriver.Builder()
  .forBrowser('chrome')
  .build();

driver.get('https://www.google.com/');

driver.findElement(By.css('#hplogo')).then((el) => {
  el.takeScreenshot().then((data) => {
    var base64Data = data.replace(/^data:image\/png;base64,/, "");
    fs.writeFile(__dirname + "/out.png", base64Data, 'base64', (err) => {
        if(err) console.log(err);
    });
  });
});

当我运行它时,我收到错误消息:

/home/project/node_modules/selenium-webdriver/lib/promise.js:654
    throw error;
    ^

UnsupportedOperationError: unknown command: session/797c146086bc89ad245f76ce99302a48/element/0.9715665113180876-1/screenshot
    at WebDriverError (/home/project/node_modules/selenium-webdriver/error.js:26:26)
    at UnsupportedOperationError (/home/project/node_modules/selenium-webdriver/error.js:435:26)
    at Object.checkLegacyResponse (/home/project/node_modules/selenium-webdriver/error.js:578:13)
    at /home/project/node_modules/selenium-webdriver/lib/webdriver.js:360:15
    at Promise.invokeCallback_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:1329:14)
    at TaskQueue.execute_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:2790:14)
    at TaskQueue.executeNext_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:2773:21)
    at /home/project/node_modules/selenium-webdriver/lib/promise.js:2652:27
    at /home/project/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (node.js:406:9)

我正在使用 selenium-webdriver 版本 2.52.0。有人知道出了什么问题吗?

【问题讨论】:

  • 因为我记得采取元素的屏幕截图方法仅适用于Edge webdriver...也许还有更多...但并非适用于所有
  • 你知道吗,我在哪里可以找到每个 webdriver 支持的方法。
  • @kaleaht 还可以查看stackoverflow.com/a/34668713/771848 答案,其中建议了更多信息和几种解决方法。

标签: javascript selenium selenium-webdriver webdriver


【解决方案1】:

确认@Andersson 所说的内容,Microsoft Edge (reference) 除外,no WebDriver actually implements element-based screenshots。您必须生成全窗口屏幕截图并进行裁剪。

请参阅my earlier answer 了解有关此主题(和其他主题)的更多背景信息和解决方法。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2020-12-30
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多