您介意帮助我了解如何处理此动态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");
无法找到该元素。
答案 0 :(得分: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");