Estou tentando construir um teste no Selenium Webdriver para verificar os valores de 2 divs que possuem o mesmo nome de classe.
Por exemplo, HTML:
<div class="prod-card">
<div class="prices">
<div class="price-wrap">
From:
<div class="price">$9.99</div>
</div>
<div class="price-wrap">
To:
<div class="price">$19.99</div>
</div>
</div>
</div>
Tenho tentado usar o localizador Xpath do Selenium, mas não consigo localizar o segundo div.
Por exemplo, o seguinte funciona:
let lowerPrice = await driver.findElement(By.xpath("//div[@class='price'][1]")).getText();
lowerPrice = lowerPrice.trim();
assert.equal(lowerPrice, expectations[i].lowerPrice);
Mas isso não funciona:
let higherPrice = await driver.findElement(By.xpath("//div[@class='price'][2]")).getText();
higherPrice = higherPrice.trim();
assert.equal(higherPrice, expectations[i].higherPrice);
eu recebo o erroNoSuchElementError: Unable to locate element: //div[@class='price'][2]
Não sei por que isso funciona bem ao encontrar o primeiro elemento, mas não o segundo.
Alguém saberia por quê?
prefiro usar
e
A razão é porque a expressão XPath
//div[@class='price'][2]
está tentando selecionar o segundo elemento div com o nome de classe 'price' em todo o documento HTML, em vez do segundo elemento div com o nome de classe 'price' dentro de um contexto específico.