如何通过Selenium和Java处理以下动态ID?
你介意帮我理解一下我如何处理这个动态ID吗? 以下是我已经尝试过的案例:如何通过Selenium和Java处理以下动态ID?,java,selenium,xpath,css-selectors,webdriver,Java,Selenium,Xpath,Css Selectors,Webdriver,你介意帮我理解一下我如何处理这个动态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
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,该元素是一个动态元素。要在所需元素上调用单击()
,可以使用以下任一解决方案:
:css选择器
driver.findElement(By.cssSelector("label[for^='undefined-undefined-Username-']")).sendKeys("aaa");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(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");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//label[starts-with(@for,'undefined-undefined-Username-')][contains(.,'Username')]"))).sendKeys("aaa");
更新 由于元素是动态的,您可能需要诱导WebDriverWait,使所需元素可单击,如下所示:
:css选择器
driver.findElement(By.cssSelector("label[for^='undefined-undefined-Username-']")).sendKeys("aaa");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(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");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//label[starts-with(@for,'undefined-undefined-Username-')][contains(.,'Username')]"))).sendKeys("aaa");