如何单击班级与其他选项相同的按钮?

时间:2018-10-06 06:35:35

标签: java selenium-webdriver

我正在尝试从列表中click一个按钮,但是此按钮与列表中的其他按钮具有相同的类,因为它们具有相同的名称(btn ban-red),所以如何如果在检查中我具有以下信息,请单击它:

<a class=“btn ban-red” data-track-event=“navigate” data-track=name=“Jobylon” - Quality Engineer” href=“https://emp.jobylon.com/jobs/16654-f/” target=“_blank”>View job/a>

检查正在复制此xpath:

/html/body/div[1]/div[4]/div/div/div/div[3]/div/div/div/div[1]/section/div/div[2]/div[1]/div[1]/article[14]/a

但是它不起作用

我还通过这种方式创建了自己的xpath:

wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@data-track-name=‘Jobylon - Quality Engineer’]"))).click();

但也不起作用

我正在将Selenium与Java一起使用,并且在Macbook中,谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不建议使用绝对xpath。您可以尝试使用相对xpath。

  • 根据元素文本定位

    driver.findElement(By.xpath("//a[contains(.,'View job')]")).click()
    
  • 如果类不是唯一的,则使用element属性的组合进行定位

    driver.findElement(By.xpath("//a[@class='btn ban-red'][@data-track-event='navigate']")).click()
    

    OR

    driver.findElement(By.xpath("//a[@class="btn ban-red"][@href='https://emp.jobylon.com/jobs/16654-f/']")).click()
    

最好使用CSS选择器,使其比xpath更快。所以你尝试

driver.findElement(By.cssSelector("a[class='btn ban-red'][data-track-event='navigate']")).click()

OR

driver.findElement(By.cssSelector("a[class="btn ban-red"][href='https://emp.jobylon.com/jobs/16654-f/']")).click()

仍然会遇到诸如元素不可见或没有此类元素之类的问题,然后尝试使用明确的等待条件,直到您的元素可见或可点击为止。