使用span类或onclick单击selenium

时间:2016-03-01 14:38:33

标签: selenium selenium-webdriver

我是java和selenium webdriver的新手。我在点击图片时遇到问题。以下是页面来源。

<a href="javascript:void(0);">
<span class="HomeButton" onclick="javascript:onBtnHomeClick();"/>
</a>

我尝试了下面的代码,但没有工作,仍然无法找到元素错误。

driver.findElement(By.xpath("//a[@onclick='onBtnHomeClick()']")).click();

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='js_AppContainer']/div[2]/div[1]/div[1]/span"))).click();


wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("HomeButton"))).click();

我必须点击主页按钮。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

我不知道为什么By.className("HomeButton")没有工作但你在其他两个方面有错误。

driver.findElement(By.xpath("//a[@onclick='onBtnHomeClick()']")).click();onclick的标记为<span>而不是<a>。它也不是onBtnHomeClick()而是javascript:onBtnHomeClick();

driver.findElement(By.xpath("//span[@onclick='javascript:onBtnHomeClick();']")).click();

如果您想使用onBtnHomeClick(),请使用包含

driver.findElement(By.xpath("//span[contains(@onclick, 'onBtnHomeClick')]")).click();

或者

driver.findElement(By.cssSelector("onclick*='onBtnHomeClick'")).click();

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='js_AppContainer']/div[2]/div[1]/div[1]/span"))).click();中,<span>父标记为<a>,而不是<div>

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='js_AppContainer']/div[2]/div[1]/div[1]/a/span"))).click();

答案 1 :(得分:0)

如果您的元素最终可见,您只需要正确的定位器。

Xpath = "//span[contains(@class,'HomeButton') and contains(@onclick,'onBtnHomeClick')]"

在exanmple上方添加等待,这应该可行。