2

我正在使用 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

4

4 回答 4

5

我认为您仍然可以使用 webdriverjs,但是他们的示例代码有错误

https://code.google.com/p/selenium/wiki/WebDriverJs

他们示例中的代码

driver.findElement(By.name("q")).sendKeys("webdriver");

driver.findElement(By.name("btnG")).click();

应该

driver.findElement(webdriver.By.name("q")).sendKeys("webdriver");

driver.findElement(webdriver.By.name("btnG")).click();

我不确定为什么它在网站上不正确。

于 2015-08-19T13:56:01.153 回答
2

以上所有内容都是旧的,您现在可以使用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);
            });
    });
于 2020-02-03T16:18:04.603 回答
0

从 webdriverjs npm 页面...

已弃用
的项目现在称为 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 });

于 2015-06-18T21:27:03.207 回答
-1

    var webdriver = require('selenium-webdriver'),
        By = webdriver.By,
        until = webdriver.until;

请试试这个?

于 2020-04-20T12:32:08.883 回答