我是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();
我必须点击主页按钮。任何帮助将不胜感激
答案 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上方添加等待,这应该可行。