Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行;“命令”;在节点javascript中使用seleniumwebdriver_Javascript_Node.js_Selenium_Webdriver - Fatal编程技术网

执行;“命令”;在节点javascript中使用seleniumwebdriver

执行;“命令”;在节点javascript中使用seleniumwebdriver,javascript,node.js,selenium,webdriver,Javascript,Node.js,Selenium,Webdriver,我感兴趣的是通过javascript API执行一些高级“命令” 如果我从基本代码开始: var browser = new webdriver .Builder() .usingServer(server.address()) .withCapabilities(webdriver.Capabilities.phantomjs()) .build(); 我尝试执行的每种形式的“可能”语法都失败了。例如: // does not

我感兴趣的是通过javascript API执行一些高级“命令”

如果我从基本代码开始:

var browser = new webdriver
        .Builder()
        .usingServer(server.address())
        .withCapabilities(webdriver.Capabilities.phantomjs())
        .build();
我尝试执行的每种形式的“可能”语法都失败了。例如:

// does not work
console.log(webdriver.Command('getWindowSize'))
// does not work
console.log(browser.Command('getWindowSize'))

有人知道如何在selenium javascript webdriver中执行“获取窗口大小”或“设置窗口大小”吗?

您可能正在寻找
驱动程序。executeScript

例如:

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
   build();

driver.executeScript('return 2').then(function(return_value) {
    console.log('returned ', return_value)
});
这将记录2到控制台

我还用以下方法对此进行了测试:

driver.get('http://underscorejs.org/');

driver.executeScript('return _').then(function(return_value) {
    console.log('returned ', return_value)
});

。。。在我的npm包中有一个文件
node\u modules/selenium webdriver/test/execute\u script\u test.js
,其中有大量使用
driver.executeScript的示例(在文件的最后,他们将
execute
定义为
executeScript
的别名)。

您需要driver.executeScript()。您可以传递函数或字符串

const _scraper = () => {
  return document.title;
}

const getPageTitle = async (url) => {
  await driver.get(url);
  const pageTitle = await driver.executeScript(_scraper);
  console.log(pageTitle);
}
您还可以将参数传递给函数

const _scraper1 = (arg) => {
  return document.getElementsByTagName(arg);
}

const getTagData = async (url) => {
  await driver.get(url);
  const metas = await driver.executeScript(_scraper, 'meta');
  console.log(metas);
}

我没有使用命令,但是我们使用了ExecuteScript函数来执行JavaScript。如果我记得的话,它会返回JavaScript通常会返回的任何内容,所以只需执行一个返回窗口大小的JavaScript函数(我想你可能需要单独做一个宽度和一个高度,或者单独得到它们,并将它们作为一个带有2个值的对象返回。)谢谢Pete。
console.log(browser.ExecuteScript('window.height'));
在这种情况下似乎不起作用。
console.log(browser.executor\uxecute('window.height'))
你有样本吗?Alex,我遇到了太多问题,与你遇到的问题类似。Node.js中的Selenium webdriver一团糟。整个promises系统似乎有点道理,但我还没有找到可靠的实际例子(除了简单的“hello world”之类的东西)最后一天,我一直试图简单地获取元素的可见文本…(叹气)我想我会放弃selenium webdriver,改用它。看起来很有希望,而且似乎使用了已经熟悉的链接语法来近似同步。在链接到外部资源时,我花了比平时更长的时间来查找文档是可以的,答案应该是自包含的,外部资源不应该是严格必需的随笔,但更多的内容(实际上,这个答案甚至不包含上述链接,只提到“我的npm包”)。我不打算回答这个问题。我觉得这已经完成了。我想指出一个有用的补充资源,selenium webdriver的用户在他们安装的npm模块中已经有了这个资源。我现在明白了,我可以,可能应该,将此信息添加为一个注释,而不是答案