【问题标题】:How to handle the following dynamic ID through Selenium and Java?如何通过 Selenium 和 Java 处理以下动态 ID?
【发布时间】:2019-02-20 15:39:53
【问题描述】:

您是否介意帮助我了解如何处理此动态 ID? 以下是我已经尝试过的案例:

driver.findElement(By.xpath("//input[contains(@id,'Username')]")).sendKeys("aaa");

driver.findElement(By.xpath("//input[starts-with(@id,'undefined-undefined-Username-')]")).sendKeys("aaa");

driver.findElement(By.xpath("//*[@type='text']")).sendKeys("aaa");

找不到那个元素。

【问题讨论】:

  • 请粘贴更多 html 代码以尝试

标签: java selenium xpath css-selectors webdriver


【解决方案1】:

根据您共享的 HTML 元素,该元素是一个 dynamic 元素。要在所需元素上调用 click(),您可以使用以下任一解决方案:

  • cssSelector:

    driver.findElement(By.cssSelector("label[for^='undefined-undefined-Username-']")).sendKeys("aaa");
    
  • xpath:

    driver.findElement(By.xpath("//label[starts-with(@for,'undefined-undefined-Username-')][contains(.,'Username')]")).sendKeys("aaa");
    

更新

由于元素是动态的,您可能需要诱导 WebDriverWait 以使所需的元素可点击,如下所示:

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("label[for^='undefined-undefined-Username-']"))).sendKeys("aaa");
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//label[starts-with(@for,'undefined-undefined-Username-')][contains(.,'Username')]"))).sendKeys("aaa");
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2013-12-01
    • 2014-06-09
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    相关资源
    最近更新 更多