2016-03-01 556 views
1

我是java和selenium webdriver的新手。我遇到了点击图片的问题。以下是页面源代码。selenium点击使用span class或onclick

<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(); 

我必须点击为homeButton。任何帮助将不胜感激

+0

点击Upvote/Accept,为我的答案,如果我的定位器工作。只要这是您的应用程序功能,即使存在较小的更改,它也将始终有效。此外,这也是您的不间断能力的最佳策略之一。 –

+0

任何运气与我的Xpath –

回答

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(); 
0

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

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

根据需要添加等待以上例如,应该工作。