执行;“命令”;在节点javascript中使用seleniumwebdriver
我感兴趣的是通过javascript API执行一些高级“命令” 如果我从基本代码开始:执行;“命令”;在节点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
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模块中已经有了这个资源。我现在明白了,我可以,可能应该,将此信息添加为一个注释,而不是答案