繁体   English   中英

我如何在Selenium Webdriver中找到此webelement?

[英]How do i locate this webelement in Selenium Webdriver?

我的问题是在网页上找到一个复选框元素。 我正在将Selenium Webdriver与Eclipse,TestNG和Java一起用作所选语言。

检查复选框元素可以得到以下结果:

<input type="checkbox" data-privid="13" data-priviligeeid="406">

我尝试使用以下xpath代码,其中字符串是从Chrome浏览器中的元素复制的xpath。 我添加了转义字符以使引号被接受:

WebElement ChangeButton = driver.findElement(By.xpath("[@id=\"privs\"]/div[1]/div[2]/label/input"));

但是这样做会使ChangeButton为空。

我还尝试遍历一个数组,直到找到一个特定的data-privid值:

ArrayList<WebElement> inputs  =(ArrayList<WebElement>)driver.findElements(By.tagName("input"));     

      if(inputs != null) {

          for(WebElement checkbox : inputs) {
              String attribute = checkbox.getAttribute("data-privid");
              System.out.println(attribute);

              ....
}
}

这也不起作用,因为属性从不获取任何值。

有什么想法可以解决这个问题吗?

编辑:这已经解决了!

您的解决方案最初对我不起作用的原因是,因为我在属于一个类的方法中进行了导航,而在第二个类中获取了Web元素。 我试图将它们组合到一个xml文件中,但是由于某些原因,当定位器类尝试执行其操作时,我最终输入了错误的url 谢谢大家提供的答案。 我和css定位器一起使用,效果很好。

试试下面的XPath

//input[@type='checkbox' and @data-privid='13']

希望它能对您有所帮助:)

无需使用XPath。 CSS选择器更加方便。 尝试这个:

driver.findElement(By.cssSelector("input[type='checkbox'][data-privid='13']"));

您的xpaht表达式"[@id=\\"privs\\"]/div[1]/div[2]/label/input" 无效
似乎您尝试在第一步中找到一个id="privs"元素,即为: "*[@id='privs']"或(最好是该元素为div的情况) "div[@id='privs']"

然后,您的xpath可能如下所示:

"div[@id='privs']/div[1]/div[2]/label/input"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM