网站网页制作电话,网站更新维护怎么做,宝安ip设计开发公司,百度推广产品有哪些目录
如何为SVG元素编写XPath
使用local-name#xff08;#xff09;的语法
需要记住的一点
将“and”与SVG元素一起使用
如何定位嵌套的SVG元素#xff1f; XPath是一种用于定位XML文档中的web元素的语言#xff0c;包括构成网页的HTML文档。在Selenium中#xff0…
目录
如何为SVG元素编写XPath
使用local-name的语法
需要记住的一点
将“and”与SVG元素一起使用
如何定位嵌套的SVG元素 XPath是一种用于定位XML文档中的web元素的语言包括构成网页的HTML文档。在Selenium中XPath是在网页上查找元素包括SVG可伸缩矢量图形元素最广泛使用的方法之一。
SVG元素不同于常规HTML元素因为它们是使用XML而不是HTML创建的。在Selenium中查找它们需要与查找HTML元素不同的方法。本文将介绍使用XPath在Selenium中定位SVG元素的步骤。 我们将使用我们的硒游乐场网站来自动化SVG元素——https://testkru.com/Elements/SVGelemnts.
对于普通的HTML元素我们可以直接使用标签来查找selenium中的元素。但是如果我们尝试使用SVG元素我们可能无法获得所需的结果如下图所示。 在这里我们使用了一个简单的“//svg”Xpath但它没有找到任何匹配项。 注意如果我们使用类似于SVG元素的id之类的东西它就会起作用。比如如果我们使用了driver.findElementBy.id“svgText”那么就可以找到相应的SVG元素。
如何为SVG元素编写XPath 如果没有id或唯一属性附加到SVG元素该怎么办那么我们将如何在Selenium中定位SVG元素呢 我们可以使用local-name函数来定位selenium中的SVG元素。
使用local-name的语法
//*[local-name()tag_name]因此为了找到SVG元素我们可以使用“//*[local-nameSVG]”XPath它将定位所有的SVG元素。 注意local-name函数不仅限于“svg”标记。它可以与div、p等任何标签一起使用。
示例
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;public class CodekruTest {public static void main(String[] args) {// pass the path of the chromedriver location in the second argumentSystem.setProperty(webdriver.chrome.driver, E:\\chromedriver.exe);WebDriver driver new ChromeDriver();driver.get(https://testkru.com/Elements/SVGelemnts);// finding the SVG elementsWebElement webElement driver.findElement(By.xpath(//*[local-name()svg]));System.out.println(webElement.getText());}} 输出
SVG text ( Click on me! )findElement为参数中传递的XPath返回了第一个匹配元素然后我们使用getText方法打印文本。
需要记住的一点
需要注意的是在为SVG元素编写XPath时我们应该使用*星号。如果我们写了一些类似“//div[local-namesvg]”的东西那么它就不会起作用。
将“and”与SVG元素一起使用
正如我们在前面的例子中看到的当我们使用“//*[local-namesvg]”XPath时它与6个svg元素匹配但如果您想要一个特定的svg元素呢 在这种情况下我们可以将“and”与local-name函数一起使用。
//*[local-name()svg and attribute_name attribute_value]它将定位具有特定属性值的SVG元素。 因此考虑到这一点我们可以使用下面的XPath精确定位高度属性值等于180的SVG元素。
//*[local-name()svg and height 180]如何定位嵌套的SVG元素
类似地我们可以通过使用下面的XPath来定位嵌套的SVG元素。
//*[local-name()svg]//*[local-name()svg]