繁体   English   中英

如何使用 Selenium 和 Java 查找具有给定 xpath 的元素

[英]How to find the element with the given xpath using Selenium and Java

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,但它没有在脚本中识别。

实际上@ng-click值包含函数调用"...()"

尝试添加它

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

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()引入WebDriverWait的元素,您可以使用以下任一定位器策略

  • 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();

您还可以使用contains inside 定位器:

  • 通过 XPATH

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM