Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Selenium和Java处理以下动态ID?_Java_Selenium_Xpath_Css Selectors_Webdriver - Fatal编程技术网

如何通过Selenium和Java处理以下动态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

你介意帮我理解一下我如何处理这个动态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,该元素是一个动态元素。要在所需元素上调用
单击()
,可以使用以下任一解决方案:

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

请再粘贴一点html代码以进行尝试