如何在Selenium中使用XPath查找元素?
我们可以使用Selenium webdriver和xpath定位器来查找元素。
要使用xpath识别元素,表达式应为`//tagname[@attribute='value']`。
要使用xpath识别元素,表达式应为`//tagname[@class='value']`。xpath有两种类型:相对路径和绝对路径。绝对路径以`/`符号开头,从根节点开始到我们要识别的元素。
例如:
/html/body/div[1]/div/div[1]/a
相对xpath以`//`符号开头,不从根节点开始。例如:
//img[@alt='tutorialspoint']
让我们看看从根节点开始的高亮显示元素的html代码。
元素“Home”的绝对xpath是`/html/body/div[1]/div/div[1]/a`。
元素“Home”的相对xpath是`//a[@title='TutorialsPoint - Home']`。
还有一些可用的函数可以帮助构建相对xpath表达式:
`text()` – 用于根据页面上可见的文本识别元素。xpath表达式为`//*[text()='Home']`。
`starts-with()` – 用于识别其属性值以特定文本开头的元素。此函数通常用于属性值在每次页面加载时都会更改的情况。
让我们看看元素“Q/A”的html:
xpath表达式应为`//a[starts-with(@title, 'Questions &')]`。
`contains()` - 它识别其属性值包含实际属性值子文本的元素。此函数通常用于属性值在每次页面加载时都会更改的情况。
xpath表达式为:`//a[contains(@title, 'Questions & Answers')]`。
语法
WebElement m = driver.findElement(By.xpath("//span[@class = 'cat-title']"));
示例
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.concurrent.TimeUnit; public class LocatorXpath{ public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //implicit wait driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //URL launch driver.get("https://tutorialspoint.com/online_dev_tools.htm"); // identify element with xpath WebElement n=driver. findElement(By.xpath("//span[@class = 'cat-title']")); String str = n.getText(); System.out.println("Text is : " + str); driver.close(); } }
输出
广告