Nella nostra applicazione quasi in ogni schermata abbiamo un pulsante con il testo 'Nuovo', ecco la sorgente html per uno dei pulsanti:Xpath per il pulsante di avere il testo come 'Nuovo'
<button id="defaultOverviewTable:j_id54" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only ui-state-hover" type="submit" name="defaultOverviewTable:j_id54" role="button" aria-disabled="false">
<span class="ui-button-text ui-c">New</span>
</button>
ho provato utilizzando l'istruzione qui sotto per fare clic sul pulsante:
driver.findElement(By.xpath("//button[[@type, 'submit'] and [text()='New']]")).click();
Ma questo non funzionava
org.openqa.selenium.InvalidSelectorException: The given selector //button[[@type= 'submit'] and [text()='New']] is either invalid or does not result in a WebElement.
Attualmente Sto usando il codice qui sotto per fare clic sul pulsante:
List<WebElement> allButt = driver.findElements(By.tagName("button"));
for (WebElement w : allButt)
{
if (w.getText().matches("New"))
{
w.click();
break;
}
}
Come ho quasi 150 pulsanti nella pagina. C'è un altro modo?
Grazie per la risposta. – HemaSundar
Tecnicamente questo finirà per fare clic su 'span' piuttosto che sul pulsante', ma l'evento si riempirà di bolle in modo da avere l'effetto richiesto. –
@IanRoberts Thks per il tuo commento;) – Stephan