我是AngularJS的新手,并尝试构建一个AngularJS练习应用程序,其中,用户将连接来自多个输入的URL,即协议,域,路径,param1,param2,param3 ......等.
该应用程序将创建一个指向该网址的链接:
<a>{{protocol}}://{{domain}}{{path}}?{{param1}}&{{param2}}&{{param3}}</a>
Run Code Online (Sandbox Code Playgroud)
以上网址使用两次.一旦上href属性,以及实际文本.现在我想做的是:
<a href="{{url}}">{{url}}</a>
Run Code Online (Sandbox Code Playgroud)
但我不知道在哪里分配网址.我在下面试过,但它确实有效,但似乎不正确.
<a href='{{url = protocol+"://"+domain+path+"?"+param1+"&"+param2+"&"+param3}}'>{{url}}</a>
Run Code Online (Sandbox Code Playgroud)
假设url在应用程序中多次使用,哪里将是最合适的分配位置url?
在GNU屏幕中,我知道我可以使用此命令更改回滚(缓冲区大小):
<Ctrl-a>:scrollback 10000
以及添加此行.screenrc:
defscrollback 10000
但是如何检查当前值是多少?(为了澄清,查看.screenrc文件并找到该行defscrollback不是我正在寻找的解决方案.)
谢谢!
我在设置Selenium WebDriverJS时遇到了一些麻烦.我的目标是使用Javascript(节点)在Chrome浏览器上运行selenium测试.
我按照https://code.google.com/p/selenium/wiki/WebDriverJs上的说明以及https://code.google.com/p/chromedriver/wiki/GettingStarted
首先我下载了chromedriver,然后在终端上运行:
$ ./chromedriver
Starting ChromeDriver (v2.2) on port 9515
Run Code Online (Sandbox Code Playgroud)
然后,我安装了selenium-webdriver:
$ npm install selenium-webdriver
npm http GET https://registry.npmjs.org/selenium-webdriver
npm http 304 https://registry.npmjs.org/selenium-webdriver
selenium-webdriver@2.35.0 node_modules/selenium-webdriver
Run Code Online (Sandbox Code Playgroud)
然后,我启动了节点控制台并尝试构建webdriver实例
$ node
> var webdriver = require('selenium-webdriver')
undefined
> var driver = new webdriver.Builder().usingServer('http://localhost:9515/wd/hub').withCapabilities(webdriver.Capabilities.chrome()).build();
undefined
>
timers.js:103
if (!process.listeners('uncaughtException').length) throw e;
^
UnknownCommandError: unknown command: wd/hub/session
at new bot.Error (/selenium/node_modules/selenium-webdriver/lib/atoms/error.js:109:18)
at Object.bot.response.checkResponse (/selenium/node_modules/selenium-webdriver/lib/atoms/response.js:103:11)
at /selenium/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:133:20
at /selenium/node_modules/selenium-webdriver/lib/goog/base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (/selenium-webdriver/lib/webdriver/promise.js:1438:20)
at notify (/selenium/node_modules/selenium-webdriver/lib/webdriver/promise.js:328:12)
at notifyAll (/selenium/node_modules/selenium-webdriver/lib/webdriver/promise.js:297:7)
at fulfill (/selenium/ …Run Code Online (Sandbox Code Playgroud) 背景:我目前正在开发一个项目,我的JS应用程序嵌入到其他多个(父)JS应用程序中.某些父应用可以通过将display:block/none设置为包含我的应用的某个元素来显示/隐藏我的应用.其他父应用程序暂时从DOM中删除我的应用程序并稍后重新附加.很少有父应用程序使用shadow dom,因此我无法访问父应用程序中的元素.
我需要一种方法来检查我的应用程序是否可见(在DOM内部并显示;不关心可见性:隐藏并且不必在视口内),而不更改父应用程序,因此我查看了getBoundingClientRect.
问题:至少在chrome上,如果元素或其祖先有display:none或者从DOM中删除它,则getBoundingClientRect返回(w:0,h:0,l:0,t:0).我找不到关于这种行为保证的任何文档,我想知道,如果它是安全的(在某种意义上这个逻辑不会改变)使用getBoundingClientRect来检查元素的可见性.
此外,我需要知道这种行为是否在所有主流浏览器中都是一致的,包括FF,IE8 +和Safari.这记录在哪里?
最后,为什么(0,0,0,0)?我觉得getBoundingClientRect应该在这种情况下返回null,因为(0,0,0,0)实际上意味着不同的东西.这有充分的理由吗?
编辑/附加问题:感谢istos指出返回null可能会破坏一些毫无疑问的代码,例如:
console.log(clientRectObject.height);
// TypeError: Cannot read property 'height' of null
Run Code Online (Sandbox Code Playgroud)
不要抱怨当前的行为,而是作为一个设计问题:而不是null,可以返回一些非法的Rect值(例如负宽度和高度)是一个更有用的替代方案吗?
我正在使用 Selenium 2.0 为我的 Google Chrome 扩展创建自动化测试:
首先,我也想测试安装过程,但是当使用 Selenium 弹出安装对话框时,似乎无法单击“添加”按钮。(我关于这个的另一个问题)。
现在,我改变了计划。我不想在测试过程中安装扩展程序,而是想在安装扩展程序的情况下启动 Chrome。但我还没有成功。
请看下面的代码:
var webdriver = require('selenium-webdriver'),
chrome = require('selenium-webdriver/chrome');
var o = new chrome.Options();
o.addExtensions(['extensions/chrome/chrome_extension.zip']); // crx file is just a zip file
var s = new chrome.ServiceBuilder('bin/chromedriver').build();
var driver = chrome.createDriver(o, s)
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,出现以下错误:

我注意到 ChromeDriver 在打开 Chrome 时会加载一个名为“Chrome Automation Extension 1”的 Chrome 扩展,因此必须有一种方法来加载另一个扩展,要么使用应用程序 ID 直接从 Webstore 加载,要么从本地计算机加载- 已包装或未包装。
任何帮助将不胜感激!
selenium google-chrome-extension selenium-chromedriver selenium-webdriver