我正在尝试从列表中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中,谢谢您的帮助。
答案 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()
仍然会遇到诸如元素不可见或没有此类元素之类的问题,然后尝试使用明确的等待条件,直到您的元素可见或可点击为止。