简体   繁体   English

我正在尝试使用selenium-webdriver拍摄元素的屏幕截图,但是抛出了UnsupportedOperationError吗?

[英]I'm trying to take a screenshot of an element with selenium-webdriver, but UnsupportedOperationError was thrown?

My current code looks like this. 我当前的代码如下所示。

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);
    });
  });
});

When I run it I get error message: 当我运行它时,我收到错误消息:

/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)

I'm using selenium-webdriver version 2.52.0. 我正在使用selenium-webdriver版本2.52.0。 Does anybody know what is going wrong? 有人知道出了什么问题吗?

To confirm what @Andersson said, with the exception of Microsoft Edge ( reference ), no WebDriver actually implements element-based screenshots . 为了确认@Andersson所说的内容,除了Microsoft Edge( 参考 )之外, 没有任何WebDriver实际上实现基于元素的屏幕截图 You have to generate a full-window screenshot and crop it. 您必须生成一个完整的窗口截图并进行裁剪。

See my earlier answer on this topic (and others) for more background and workarounds. 有关更多背景和变通方法,请参阅我先前关于此主题(及其他主题)的答案

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 Ruby 中使用 selenium-webdriver/capybara 截取完整浏览器页面及其元素的屏幕截图? - How to take a screenshot of a full browser page and its elements using selenium-webdriver/capybara in Ruby? 尝试从节点中的 selenium-webdriver 中的图像获取 src 链接 - Trying to get the src link from an image in selenium-webdriver in node Selenium-webdriver(Java Script)等待元素消失 - Selenium-webdriver (Java Script) wait for element to disappear Selenium-webdriver 使用 CSS 选择器找不到元素 - Selenium-webdriver cannot find element using CSS selector Selenium-webdriver JS - 如何等待元素可见 - Selenium-webdriver JS - how to wait until an element is visible Selenium-WebDriver 如何使用 javascript 和 firefox 浏览器突出显示元素 - Selenium-WebDriver how to highlight element using javascript and firefox browser 使用 selenium-webdriver 和 PjantomJS 等待元素变为可见 - Wait until an element becomes visible using selenium-webdriver and PjantomJS 如何在SauceLabs中使用selenium-webdriver包? - How can I use selenium-webdriver package with SauceLabs? 如何使用selenium-webdriver正确添加cookie? - How can I correctly add a cookie using selenium-webdriver? Selenium-webdriver,我无法进入模态窗口 - Selenium-webdriver, I cannot go to the modal window
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM