[英]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 定位器:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(@ng-click, 'addCust')]"))).click();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.