W naszej aplikacji prawie w każdym ekranie mamy przycisk z tekstem „New”, Oto źródło html dla jednego przycisku:Xpath dla przycisku mającego tekst jako „Nowy”
<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>
Próbowałem za pomocą poniższego komunikatu kliknąć na przycisk:
driver.findElement(By.xpath("//button[[@type, 'submit'] and [text()='New']]")).click();
Ale to nie działa
org.openqa.selenium.InvalidSelectorException: The given selector //button[[@type= 'submit'] and [text()='New']] is either invalid or does not result in a WebElement.
Obecnie Używam poniższego kodu, aby kliknąć przycisk:
List<WebElement> allButt = driver.findElements(By.tagName("button"));
for (WebElement w : allButt)
{
if (w.getText().matches("New"))
{
w.click();
break;
}
}
Ponieważ mam prawie 150 przycisków na stronie. Czy jest jakiś inny sposób?
dziękuję za odpowiedź. – HemaSundar
Technicznie skończy się to kliknięciem przycisku 'span' zamiast' '', ale zdarzenie zostanie wywołane bańką, aby uzyskać wymagany efekt. –
@IanRoberts Thks za komentarz;) – Stephan