Как получить диапазон текста с селеном? - PullRequest
0 голосов
/ 27 сентября 2019
<p id="line1" class=""><span class="bot">So you have short term memory?</span><span id="snipTextIcon" class="yellow" style="opacity: 1;"></span></p>

Я хочу получить этот текст: So you have short term memory?

Вот мой код:

const {Builder, By, Key, until} = require('./node_modules/selenium-webdriver/index.js');
const {Options} = require('./node_modules/selenium-webdriver/chrome.js');
(async function() {
  let driver;
  try {
    driver = await new Builder()
        .forBrowser('chrome')
        .setChromeOptions(
            new Options().setMobileEmulation({deviceName: 'Nexus 5X'}))
        .build();
    await driver.get('https://www.cleverbot.com/');
    await driver.findElement(By.name('stimulus')).sendKeys('naber', Key.RETURN);

    const waitFind = (locator) => {
        return driver.findElement(async () => {
            await driver.wait(until.elementLocated(locator));
            return driver.findElement(locator);
        });
    }

    let a = await driver.findElement(By.id('line1')).getText();
    console.log(a);
    await waitFind(By.id('line1'), 5000)
    //await waitFind(By.id('snipTextIcon'), 5000);
  } finally {
    await driver && driver.quit();
  }
})().then(_ => console.log('SUCCESS'), err => console.error('ERROR: ' + err));

Вывод:

PS C:\Users\pyramid\OneDrive\Masaüstü\deneme> node app

DevTools listening on ws://127.0.0.1:52265/devtools/browser/*******

SUCCESS

Я не нашел слишком много документации по этому вопросу.

1 Ответ

2 голосов
/ 27 сентября 2019

Текстовый элемент So you have short term memory? присутствует внутри тега Span. Используйте следующий xpath для получения текста.

driver.findElement(By.xpath('//span[@class="bot"]')).getText()

ИЛИ

driver.findElement(By.xpath('//p[@id="line1"]//span[@class="bot"]')).getText()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...