Selenium 下面返回一个NoSuchElementException,您能帮我识别xpath语法中的错误吗?

Selenium 下面返回一个NoSuchElementException,您能帮我识别xpath语法中的错误吗?,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我找不到xpath元素定位器的错误 使用自动测试工具SeleniumWebDriver登录 driver.findElement(By.className("btn-primary")).click(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.xpath("//input[@aria-labelledby='vaadin-text-field-la

我找不到xpath元素定位器的错误

使用自动测试工具SeleniumWebDriver登录

 driver.findElement(By.className("btn-primary")).click();
   driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
   driver.findElement(By.xpath("//input[@aria-labelledby='vaadin-text-field-label-19']")).click();
   driver.findElement(By.xpath("//input[@aria-labelledby='vaadin-text-field-label-19']")).sendKeys("xxx@gmail.com");
      driver.findElement(By.xpath("//input[@type='password']")).click();
    driver.findElement(By.xpath("//input[@type='password']")).sendKeys("12345678");
    driver.findElement(By.className("btn-block")).click();

你能试试这个xpath吗

driver.findElement(By.xpath("//input[@placeholder='Enter email address']")).click();
driver.findElement(By.xpath("//input[@placeholder='Enter email address']")).sendKeys("xxx@gmail.com");

请避免引用示例中具有动态索引的属性(vaadin-text-field-label-21),21是动态生成的,每次刷新或新会话时,这些属性都会发生变化。

请尝试以下
xpath
输入详细信息

public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://jbm4u.com/jupiter/#/signin");
        driver.findElement(By.className("btn-primary")).click();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.xpath("//div[@class='card']//vaadin-text-field[@placeholder='Enter email address']")).click();
        driver.findElement(By.xpath("//div[@class='card']//vaadin-text-field[@placeholder='Enter email address']")).sendKeys("xxx@gmail.com");
        driver.findElement(By.xpath("//div[@class='card']//vaadin-password-field[@placeholder='Enter Password']")).click();
        driver.findElement(By.xpath("//div[@class='card']//vaadin-password-field[@placeholder='Enter Password']")).sendKeys("12345678");

    }
浏览器快照


如果您要填写电子邮件地址,则需要此选择器:

driver.findelelement(通过.cssSelector(“vaadin文本字段[占位符=”输入电子邮件地址“]))。发送键(“test@email.com“”

密码字段为:

driver.findelelement(通过.cssSelector(“vaadin密码字段[placeholder='Enter password']”)。sendKeys(“dwedewdw”)

和“提交”按钮:

driver.findelelement(通过.cssSelector(“按钮[class*='btn-block]”)。单击()


尽可能避免使用Xpath,因为它太脆弱了。我自己已经测试过上述选择器。

请共享HTML代码?始终将回答问题的所有相关信息放在问题本身中,而不是放在评论中。这将使未来的读者更容易获得所有必要的信息,而不必阅读所有的评论。只需编辑问题,在那里添加详细信息,然后用@向另一个用户发送消息,让他们知道您已进行了请求的更改。不,我也尝试过这种方法,它返回相同的异常:org.openqa.selenium.NoSuchElementException:无此类元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//input[@placeholder='Enter email address']'”}您在单击按钮或输入时收到错误?对于单击和输入,同样的例外,我认为它无法找到元素本身。您可以发布您正在处理的html并尝试使用此css选择器一次吗?您可以尝试使用此css选择器驱动程序。findelelement(By.cssSelector)(“输入[占位符=\“输入电子邮件地址\“]”),这是链接,我也尝试过使用css选择器