2016-03-01 2337 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')]" 

根據需要添加等待以上例如,應該工作。