如何使用selenium和java查找具有给定xpath的元素

zfciruhq  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(435)
public void addCustInfo() throws InterruptedException
{   
    WebDriver driver;
    WebDriverManager.chromedriver().setup();
    driver = new ChromeDriver();
    driver.get("http://www.way2automation.com/angularjs-protractor/banking/#/manager");
    Thread.sleep(3000);
    driver.findElement(By.xpath("//button[@ng-click='addCust']")).click();
}

我尝试过使用相对和绝对xpath,但它在脚本中没有标识。

eblbsuwk

eblbsuwk1#

事实上 @ng-click 值包含函数调用 "...()" 尝试添加它

"//button[@ng-click='addCust()']"
mrfwxfqh

mrfwxfqh2#

您还可以使用包含内部定位器:
通过xpath

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(@ng-click, 'addCust')]"))).click();
djmepvbi

djmepvbi3#

价值 ng-click 属性不是addcust,而是 addCust() .
所以到 click() 在元素上,可以使用以下任一定位器策略: cssSelector :

driver.findElement(By.cssSelector("button[ng-click^='addCust']")).click();
``` `xpath` :

driver.findElement(By.xpath("//button[starts-with(@ng-click, 'addCust')]")).click();

但是,由于元素是一个动态元素,因此要确定元素,您需要为 `elementToBeClickable()` 您可以使用以下任一定位器策略: `cssSelector` :

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button[ng-click^='addCust']"))).click();
``` xpath :

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[starts-with(@ng-click, 'addCust')]"))).click();

相关问题