我正在使用webdriverjs,打开一个网站并按其ID选择一个元素。代码是,
var webdriverjs = require('webdriverjs'),
client = webdriverjs.remote({desiredCapabilities:{browserName:'phantomjs'}}).init();
client.url('www.google.com', function(err){
client.findElement(webdriverjs.By.id('lst-ib')).sendKeys('duck duck go\n')
})
它抛出错误,
webdriverjs.By is undefined
如何在By
中使用webdriverjs
功能?
答案 0 :(得分:3)
我认为您仍然可以使用webdriverjs,但他们的示例代码有错误
https://code.google.com/p/selenium/wiki/WebDriverJs
他们示例中的代码
driver.findElement(By.name( “Q”))的SendKeys( “webdriver的”);
driver.findElement(By.name( “btnG”))上单击();
应该是
driver.findElement(webdriver.By.name( “Q”))的SendKeys( “webdriver的”);
driver.findElement(webdriver.By.name( “btnG”))上单击();
我不确定为什么网站上的内容不正确。
答案 1 :(得分:0)
来自webdriverjs npm页面......
DEPRECATED
Project现在称为WebdriverIO,并已移至GitHub上的webdriverio / webdriverio。请使用$ npm install webdriverio,因为这个NPM项目不再维护了!
所以require('webdriverio');
可能是你最好的选择。代替
client.findElement(webdriverjs.By.id('lst-ib')).sendKeys('duck duck go\n')
简单地
client.setValue('#lst-ib','duck duck go', function(err, res){
//some callback here
});
答案 2 :(得分:0)
以上所有内容均已过时,您现在可以改用selenium-webdriver
。就我而言,我只是忘了包含By
,而我的IDE并没有帮助。
ReferenceError: By is not defined
我只需要:
const {By} = require('selenium-webdriver');
截至02022020的完整示例,包括使用chromedriver设置路径!
const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const chromedriver = require('chromedriver');
const { By, Key } = webdriver; // Using object destructuring for convenience - or webdriver.By
chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
const driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.get('https://www.google.com');
driver.findElements(By.xpath('//input[@type="text"]'))
// ES6 desturcturing usage. Could be: (inputs), and then inputs[0].sendKeys...
.then(([searchInput]) => {
// inputs[0].sendKeys(...words);
searchInput.sendKeys('stack overflow bumper stickers')
.then(() => {
searchInput.sendKeys(Key.ENTER);
});
});
答案 3 :(得分:-1)
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
请尝试这个吗?