java - org.openqa.selenium.TimeoutException : Expected condition failed: waiting for visibility of element located by By. xpath:

标签 java selenium-webdriver xpath css-selectors webdriverwait

我正在尝试使用选项sendkeys()发送文本。这是我的类页面对象中的方法案例:

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(),您必须为 elementToBeClickable() 引发 WebDriverWait您可以使用以下任一解决方案:

  • 使用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");
    }
    

关于java - org.openqa.selenium.TimeoutException : Expected condition failed: waiting for visibility of element located by By. xpath:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126362/

相关文章:

java - 将多数据类型文件读入 Java 中的 ArrayList

java - 替换字符串数组中的条目

java - 如何在类中使用 List<String> 元素创建不可变类

java - 如何使用 webdriver 在 Firefox 中处理下载 .xlsx 文件,其中窗口弹出默认为 'Open with' 单选按钮而不是 'Save file'

xpath - 使用不同节点的 xpath 提取文本

python - scrapy 问题 : xpath & regex - Regex not working as it should be

java - 使用带有 Tomcat 的 Jersey/Spring 在 REST 中注入(inject)时出错

java - 类 FluentWait<T> 中的方法 until 不能应用于给定类型

java - 用于 Selenium WebDriver 的 PhantomJS 2.5.0-beta 在 Linux 中不工作

sql - 如何重写 SQL xpath 查询以创建索引 View