org.openqa.selenium.TimeoutException:预期条件失败:等待 By.xpath 所在元素的可见性:
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.xpath:
我正在尝试使用 sendkeys()
选项发送文本。这是我的 class 页面对象中的方法案例:
public void setEntityName() {
internalWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"entity_name\"]")));
entityName.clear();
entityName.sendKeys("TEST");
}
HTML:
<input id="entity_name" name="entity_name" type="text" ng-model="entityData.name" ng-disabled="false" placeholder="Type Enity Name" data-maxlength="20" data-smart-validate-input="" data-required="" class="ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength ng-touched">
测试显示错误
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.xpath: //*[@id="entity_name"]
谁能帮我解决这个错误。
所需元素是 Angular 元素,因此要调用 sendKeys()
而不是 visibilityOfElementLocated()
,您必须为 [=] 引入 WebDriverWait 14=] 并且您可以使用以下任一解决方案:
使用cssSelector
:
public void setEntityName() {
WebElement entityName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-pristine.ng-invalid.ng-invalid-required.ng-valid-maxlength.ng-touched#entity_name[ng-model='entityData.name']")));
entityName.clear();
entityName.sendKeys("TEST");
}
使用xpath
:
public void setEntityName() {
WebElement entityName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength ng-touched' and @id='entity_name'][@ng-model='entityData.name']")));
entityName.clear();
entityName.sendKeys("TEST");
}
我正在尝试使用 sendkeys()
选项发送文本。这是我的 class 页面对象中的方法案例:
public void setEntityName() {
internalWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"entity_name\"]")));
entityName.clear();
entityName.sendKeys("TEST");
}
HTML:
<input id="entity_name" name="entity_name" type="text" ng-model="entityData.name" ng-disabled="false" placeholder="Type Enity Name" data-maxlength="20" data-smart-validate-input="" data-required="" class="ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength ng-touched">
测试显示错误
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.xpath: //*[@id="entity_name"]
谁能帮我解决这个错误。
所需元素是 Angular 元素,因此要调用 sendKeys()
而不是 visibilityOfElementLocated()
,您必须为 [=] 引入 WebDriverWait 14=] 并且您可以使用以下任一解决方案:
使用
cssSelector
:public void setEntityName() { WebElement entityName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.ng-pristine.ng-invalid.ng-invalid-required.ng-valid-maxlength.ng-touched#entity_name[ng-model='entityData.name']"))); entityName.clear(); entityName.sendKeys("TEST"); }
使用
xpath
:public void setEntityName() { WebElement entityName = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength ng-touched' and @id='entity_name'][@ng-model='entityData.name']"))); entityName.clear(); entityName.sendKeys("TEST"); }