查找页面中的文字元素

Selenium WebDriver实战
package com.test.utils;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class Search
{
 public static boolean isContentAppeared(WebDriver driver, String content){
  boolean status = false;
  try{
  
   driver.findElement(By.xpath("//*[contains(.,'" + content + "')]"));
   System.out.println(content+ "已找到");
   status = true;
  }catch (Exception e){
   System.out.println(content+ "没有找到");
  }
  return status;
 }
}

 @BeforeClass
 public void beforeClass() {
   System.setProperty("webdriver.ie.driver", "D:\\WebDriver\\IEDriverServer.exe");
   DesiredCapabilities ieCapability = new DesiredCapabilities();
   ieCapability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
   driver = new InternetExplorerDriver(ieCapability);
   //driver.get("http://localhost:8080/day04/demo.html");
   driver.get("http://demo.opensourcecms.com/wordpress/wp-login.php");
 }

 public void login() throws InterruptedException{
  driver.findElement(By.id("user_login")).sendKeys("admin");
  driver.findElement(By.id("user_pass")).sendKeys("demo123");
  driver.findElement(By.id("wp-submit")).click();
  Thread.sleep(3000);
  //WebElement element = driver.findElement(By.xpath("//ul[@id='adminmenu']/li[3]/div[3]/div/ul/li[2]/a[.='Add New']"));
  WebElement element = driver.findElement(By.xpath("//ul[@id='adminmenu']/li[3]/div[3]/div/ul/li[2]/a"));
  //WebElement element = driver.findElement(By.xpath("//ul[@id='adminmenu']/li[3]/div[3]/div/ul/a[@contains(text(),'Add New')]"));
  Thread.sleep(3000);
  Assert.assertTrue(Search.isContentAppeared(driver, "Add New Post"));
 }

### 如何使用 XPath 定位特定元素 XPath 是一种强大的查询语言,用于在 XML 或 HTML 文档中定位节点。通过组合不同的语法结构,可以实现精确的元素匹配。 #### 使用 XPath 基本语法 XPath 提供多种方式来定义路径表达式。以下是常见的几种形式: 1. **绝对路径**: 从文档根节点开始查找。 ```python "/html/body/div" ``` 2. **相对路径**: 不限定起始位置,在任意子树下寻找目标节点。 ```python "//div[@class='example']" ``` 3. **属性过滤器**: 利用 `@` 符号筛选具有某些特性的标签。 ```python "//input[@type='text' and @name='username']" ``` 4. **文本内容匹配**: 针对包含具体字符串的目标对象操作。 ```python "//button[text()='登录']" ``` 以上每种模式都可以单独或者联合应用以满足复杂需求[^1]。 #### Selenium 中的应用实例 当结合自动化测试工具如 Selenium 进行网页交互时,可以通过如下代码片段演示如何利用上述规则找到并操控页面上的按钮控件: ```python from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") # 找到ID为 __next 下 header 内部的一个 button ,其文字等于 '搜索' search_button = driver.find_element( By.XPATH, "//div[@id='__next']/header/div/div/div/button[text()='搜索']" ) if search_button.is_displayed(): search_button.click() driver.quit() ``` 此脚本展示了怎样借助 Python 和 Selenium 库加载网站、解析 DOM 结构以及执行点击动作的过程[^2]。 #### 复杂条件下的多层嵌套选择 如果希望进一步缩小范围,则可以在原有基础上追加更多约束条件。比如只选取那些既带有 class="active", 同时又有 title 属性存在的 li 节点: ```python "//ul/li[contains(@class,'active')][@title]" ``` 另外还可以考虑按索引取值的情况(注意这里的计数是从1开始而非0),例如获取表格第二行第三列单元格的数据: ```python "(//table/tbody/tr)[2]/td[3]" ``` 这些技巧有助于处理更加精细的选择场景[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值