【发布时间】:2016-06-09 21:39:51
【问题描述】:
我似乎无法弄清楚导致 typeError 的原因或原因。基本上我要做的就是获取当前选定帧的名称。下面是代码和错误。
this.getCurrentFrameName = function(driver)
{
var frames = driver.findElements(driver.By.css('frame'));
for (var frame in frames)
{
if (frame.isSelected()) {
return frame.getName;
}
}
};
错误
TypeError: Cannot read property 'css' of undefined
at getCurrentFrameName (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\src\FrameHandler.js:21:75)
at Context.<anonymous> (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\test\FrameHandlerTest.js:17:29)
at callFn (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runnable.js:315:21)
at Test.Runnable.run (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runnable.js:308:7)
at Runner.runTest (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:422:10)
at C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:533:12
at next (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:342:14)
at C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:352:7
at next (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:284:14)
at Immediate._onImmediate (C:\Users\charles.sexton\WebstormProjects\JS-Selenium-Toolkit\node_modules\mocha\lib\runner.js:320:5)
编辑:我想在测试中包含所有内容,但仍然遇到与以前相同的错误。我没有包含期望、断言或应该声明。
var expect = require('chai').expect;
var FrameHandler = require('../../JS-Selenium-Toolkit/src/FrameHandler.js');
var webdriver = require('selenium-webdriver');
/** required imports for Google Chrome without setting the PATH environment variable */
var chrome = require('selenium-webdriver/chrome');
var chromePath = require('selenium-chromedriver').path;
describe('FrameHandler', function()
{
var frameHandler = new FrameHandler();
it('', function()
{
var service = new chrome.ServiceBuilder(chromePath).build();
chrome.setDefaultService(service);
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.get('http://google.com');
var frames = driver.findElements(driver.By.css('frame'));
console.log(frames.length());
for (var frame in frames)
{
console.log(frame.getName);
if (frame.isSelected()) {
console.log(frame.getName);
return frame.getName;
}
}
});
});
【问题讨论】:
-
当您在
findElements行上键入By时,您想引用什么?也许你想要driver.css...虽然我不确定driver到底是什么类型的对象。 -
这是我的驱动对象; driver = new webdriver.Builder() .withCapabilities(webdriver.Capabilities.chrome()) .build();
-
那么这个对象有
By属性吗? -
我只是在读这个...stackoverflow.com/questions/18288333/… - 也许你需要使用
By.cssSelector? -
@CharlesSexton 我不熟悉 Javascript 语言绑定,但我认为你应该尝试 -
iframes = driver.findElements(webdriver.By.tagName('iframe'))或 'iframes = driver.findElements(webdriver.By.tagName('frame'))'
标签: node.js selenium-webdriver