如何解决如何在Selenium WebDriver中单击SVG元素
我有一个svg对象,使用Selenium Webdriver,我需要单击作为按钮并转到上一页。使用xpath我无法这样做。 以下是svg的html代码,但我无法获取相同的xpath。非常感谢您的帮助。
HTML代码:
<div class="title-holder">
<h4>Home Dashboard</h4>
<div class="time">3:48pm ET</div>
<button class="update-button" type="button" data-testid="header-update-link" title="Refresh">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill="currentColor" d="M20 12l-2.5 3-.18-.22-.71-.84L15 12h2a5.007 5.007 0 0 0-8.49-
3.59l-.63-.76A5.9083 5.9083 0 0 1 12 6c3.3137 0 6 2.6863 6 6h2zm-4.51 3.59A5.007 5.007 0 0 1 7
12h2l-1.61-1.93v-.01l-.71-.84L6.5 9 4 12h2c0 3.3137 2.6863 6 6 6a5.9083 5.9083 0 0 0 4.12-
1.65l-.63-.76z"></path>
</svg>
</button>
</div>
解决方法
Xpath:
//*[@class='update-button']/*[name()='svg']
尝试使用javascript执行点击操作
WebElement ele = driver.findElement(By.xpath("//*[@class='update-button']/*[name()='svg']"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();",ele);
,
根据您共享的HTML,您可以放心地避开<svg>
元素,然后单击父<button>
元素,为elementToBeClickable()
引出WebDriverWait,就可以使用以下任一Locator Strategies:
-
cssSelector
:new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.update-button[data-testid='header-update-link'][title='Refresh']"))).click();
-
xpath
:new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='update-button' and @data-testid='header-update-link'][@title='Refresh']"))).click();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。