Получить текст из элемента XPath с помощью Selenium WebDriver с помощью JavaScript

#javascript #node.js #selenium #selenium-chromedriver

#javascript #node.js #селен #selenium-chromedriver

Вопрос:

Я пытаюсь использовать Selenium для получения текстовых элементов с веб-сайтов с помощью Node.

В качестве примера я использую URL: https://www.ebuyer.com/874785-exdisplay-gigabyte-geforce-rtx-2080-ti-gaming-oc-11gb-graphics-card-ebr2-gv-n208tgaming-oc-11gc и XPath /html/body/section/div[1]/div[3]/div[1]/div[3]/form/button

Я вижу в плагине выбора XPaath, что это приводит к «Добавить в корзину», однако приведенный ниже код регистрирует пустую строку. Есть идеи, что я делаю не так?

Я пробовал это с другим элементом на странице, который работает, поэтому я предполагаю, что это кнопка?

 const selenium = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const chromedriver = require('chromedriver');

chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
const driver = new selenium.Builder()
  .withCapabilities(selenium.Capabilities.chrome())
  .build();

await driver.get(url);
await delay(1000);
const value = await driver.findElement(web.By.xpath(xPath)).getText();
console.log(value)
  

Ответ №1:

Используйте следующее xpath , чтобы идентифицировать кнопку.

 //div[@class='purchase-info']//input[@value='Add to Basket']
  

Обновить:

 const value = await driver.findElement(web.By.xpath("//div[@class='purchase-info']//input[@value='Add to Basket']")).getAttribute("value");
console.log(value)
  

Комментарии:

1. У меня все та же проблема. Запрос завершается успешно, но значение пустое

2. @K20GH: чтобы получить значение getText() , здесь не сработает, вы должны использовать getAttribute("value")

3. @K20GH: Пожалуйста, проверьте обновленный ответ и сообщите мне статус?