【问题标题】:How to select locator for checkboxes如何为复选框选择定位器
【发布时间】:2018-06-01 07:18:07
【问题描述】:

这里我必须使用selenium 选择复选框,但我无法选择它。它只有一个我正在使用的类名选项,但出现错误:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"class name","selector":"um-icon-android-checkbox-outline"}

代码

@Test
public void validemail()
{
    WebElement email=driver.findElement(By.id("username-15"));
    email.clear();
    email.sendKeys("ceicateviewer");

    WebElement password=driver.findElement(By.id("user_password-15"));
    password.clear();
    password.sendKeys("1256Aa");

    WebElement showpassword=driver.findElement(By.className("um-icon-android-checkbox-outline"));
    showpassword.click();

    WebElement keepsignin=driver.findElement(By.className("um-icon-android-checkbox-outline"));
    keepsignin.click();


    /*WebElement login=driver.findElement(By.className("um-button"));
    login.click();*/
}

【问题讨论】:

  • 能否向我们展示您的复选框的 HTML?
  • 为了找到正确的 xpath,应该有问题的 HTML 块。请添加。
  • (By.xpath("//i[@class='um-icon-android-checkbox-outline-blank']"));但它仍然无法找到
  • 人们要求你分享 HTML
  • @shwetakaushik 检查此讨论以解决NoSuchElementException

标签: selenium checkbox path testng


【解决方案1】:

所以,我从您的代码中得知,复选框 showpassword 和复选框 keepsignin 似乎具有相同的类名。这意味着,至少有 2 个元素具有类名 um-icon-android-checkbox-outline,这就是为什么当您使用 driver.findElement 时,驱动程序不知道是哪一个。在这种情况下,您必须使用driver.findElements。你可以试试这个:

List<WebElement> checkboxes = driver.findElements(By.className("um-icon-android-checkbox-outline"));
// assuming there are only 2 elements have this classname, and in this order
checkboxes.get(0).click();  // click on showpassword
checkboxes.get(1).click();  // click on keepsignin

希望对你有帮助。

【讨论】:

  • 如果我正在使用此代码(它会抛出此错误):::::java.lang.Error: 未解决的编译问题:无法将列表解析为无法解析的类型解析为类型 get 无法解析
  • @shwetakaushik:import java.util.List 是否存在于您的 Imports 中?该错误表明您可能使用了错误的导入。
  • 导入 java.util.List;导入 org.openqa.selenium.By;导入 org.openqa.selenium.WebDriver;导入 org.openqa.selenium.WebElement;导入 org.openqa.selenium.chrome.ChromeDriver;导入 org.testng.annotations.Test;我将此导入与代码列表showpassword=get.driver.findElement(By.className("um-icon-android-checkbox-outline")); showpassword.get.click(); List keepsignin=get.driver.findElement(By.xpath("um-icon-android-checkbox-outline")); keepsignin.get.click();然后它给出错误 java.lang.Error: get cannot be resolved @Ragnarsson
  • @shwetakaushik 好吧,你的代码做错了。 1)为什么get.driver.findElement?!。我不明白。这就是为什么你得到错误get cannot be resolved。 2) findElement 返回单个 WebElement,而不是列表。请再次检查我的答案。
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多