我们如何单击具有相同类名和相同名称的按钮

时间:2016-02-09 09:59:33

标签: java html css selenium xpath

除了使用xpath方法之外,我们如何为不同的元素单击具有相同类名和相同名称的按钮。

input class="btnstyle greenbtn paddinglr20" type="submit" value="Upload " name="submit_upload

我尝试了第二个按钮,但没有工作,

WebElement butttonToClick1 = driver.findElement(By.name("submit_upload"));
((JavascriptExecutor)driver).executeScript("arguments[1].click();",butttonToClick1 );

3 个答案:

答案 0 :(得分:0)

  

Selenium WebDriver API支持不同的识别方式   元素:按ID,按CLASS,按NAME,按CSS选择器,按XPath,按TAG   名称。您还可以定义自定义选择器以进行交互   元素。

为元素,名称和类分配唯一ID以便更有效地进行自动UI测试总是一个好习惯。如果这不可能,您将需要使用高级或XPath选择器与这些元素进行交互。由于性能和简单性原因,最受欢迎的选择器是CSS选择器。

driver.findElement(By.id("element id"))
driver.findElement(By.className("element class"))
driver.findElement(By.name("element name"))
driver.findElement(By.tagName("element html tag name"))
driver.findElement(By.cssSelector("css selector"))
driver.findElement(By.link("link text"))
driver.findElement(By.xpath("xpath expression"))

如果存在唯一性问题,您还可以采用DOM结构并生成xpath。由您来决定如何优化和改进用于定位目的的元素。如果您发现上述任何一种适合您的情况,那么您可以使用它。

您可以从here找到xpath的更多功能。

答案 1 :(得分:0)

@Senthil您可以通过xpath访问,使用xpath可以访问第二个元素。 它总是点击第一个,因为findElement将返回与您的条件匹配的第一个。您可以使用findElements返回匹配的所有元素的列表,然后访问找到的第二个元素。你也可以使用一个xpath,如"(// img [@id =' email'])[2]"。

您可能想要做的一件事是调查是否可以创建一个xpath,该xpath会考虑应该与之关联的下拉菜单,这样您就可以确保您单击的图像始终是该特定下拉列表的图像。这个难点取决于你的申请。

答案 2 :(得分:0)

你可以像下面这样使用xpath: -

//input[@class='btnstyle greenbtn paddinglr20'][2]

OR

您可以使用以下列表: -

   int i=0;
   List<WebElement> allOptions = driver.findElements("Your Locator");
    for ( WebElement we: allOptions) { 
       i++;
       if(i==1)
       {
          we.click();
        }
    }

希望它会对你有所帮助:)。