J'essaie d'utiliser Selenium pour obtenir des éléments de texte à partir de sites Web utilisant Node.

À titre d'exemple, j'utilise l'URL : https://www.ebuyer.com/874785-exdisplay-gigabyte-geforce-rtx-2080-ti-gaming-oc-11gb-graphics-card- ebr2-gv-n208tgaming-oc-11gc et le XPath /html/body/section/div[1]/div[3]/div[1]/div[3]/form/button

Je peux voir dans un plugin de sélection XPaath qu'il en résulte "Ajouter au panier", mais le code ci-dessous enregistre une chaîne vide. Une idée de ce que je fais mal?

Je l'ai essayé avec un élément différent sur la page qui fonctionne, donc je suppose que c'est un bouton ?

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)
0
K20GH 10 nov. 2020 à 23:45

1 réponse

Meilleure réponse

Utilisez le xpath suivant pour identifier le bouton.

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

Mise à jour:

const value = await driver.findElement(web.By.xpath("//div[@class='purchase-info']//input[@value='Add to Basket']")).getAttribute("value");
console.log(value)
1
KunduK 10 nov. 2020 à 21:12