selenium点击使用span class或onclick
问题描述:
我是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。任何帮助将不胜感激
答
我不知道为什么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();
答
您只需要正确的定位器,如果您的元素将最终可见。
Xpath = "//span[contains(@class,'HomeButton') and contains(@onclick,'onBtnHomeClick')]"
根据需要添加等待以上例如,应该工作。
点击Upvote/Accept,为我的答案,如果我的定位器工作。只要这是您的应用程序功能,即使存在较小的更改,它也将始终有效。此外,这也是您的不间断能力的最佳策略之一。 –
任何运气与我的Xpath –