[Selenium] Selenium find Element Examples

---> 1. By.id  以百度主页为例

<span classs = "bg s_ipt_wr">

  <input type = "text"

      name = "wd"

      id = "kw"

      maxlength = "100"

      class = "s_ipt"

      autocomplete = "off">

</span>

<span classs = "bg s_btn_wr">

  <input type = "submit"

      name = "百度一下"

      id = "su"

      class = "bg s_btn"

      onmousedown = "this.className = 'bg s_btn_s_btn_h'

      onmouseout = 'this.className = ‘bg s_btn’'>

</span>

 

在webDriver 中通过ID 查找元素的java 示例代码:

pubic class testBaiduById{

  public static void main(String[] args){

    WebDriver driver = new FirefoxDriver();

    driver.get("http://baidu.com");

    

    WebElement searchBox = driver.findElement(By.id("kw"));

    searchBox.sendkeys("test Baidu By Id");

 

    WebElement searchButton = driver.findElement(By.id("su"));

    searchButton.submit();

    

    driver.close();

  }

}

 

---> 2. By.name

---> 3. By.tagName

---> 4. By.className

---> 5. By.linkText

<a href = "http://www.youkuaiyun.com/company/contact.html" target = "_blank">联系方式</a>

 

pubic class testBaiduByLinkText{

  public static void main(String[] args){

    WebDriver driver = new FirefoxDriver();

    driver.get("http://csdn.com");

    

    WebElement contactLink = driver.findElement(By.linkText("联系方式"));

    contactLink.click;

 

    driver.close();

  }

}

 

---> 6. By.partialLinkText

<a href = "http://www.youkuaiyun.com/company/contact.html" target = "_blank">联系方式</a>

 

pubic class testBaiduByPartialLinkText{

  public static void main(String[] args){

    WebDriver driver = new FirefoxDriver();

    driver.get("http://csdn.com");

    

    WebElement contactLink = driver.findElement(By.partiallinkText("联系"));

    contactLink.click;

 

    driver.close();

  }

}

---> 7. By.cssSelector

---> 8. By.Xpath

package com.morningstar.aa.pages;

import org.testng.annotations.Test;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;

public class testXPath {
WebDriver driver;

@BeforeClass
public void setUp(){
System.setProperty("webdriver.chrome.driver", "/Selenium 2/selenium/chromedriver");
driver = new ChromeDriver();
}

@AfterClass
public void tearDown(){
driver.close();
driver.quit();
}

@Test
public void testGoogle() throws InterruptedException{
driver.get("http://www.google.com");

WebElement searchBox = driver.findElement(By.xpath("//*[@id = \"lst-ib\"]"));
searchBox.sendKeys("selenium");

WebElement searchButton = driver.findElement(
By.xpath("//*[@id=\"tsf\"]/div[2]/div[3]/center/input[]"));
searchButton.click();

Wait<WebDriver> wait = new WebDriverWait(driver, 30);
wait.until(visibilityOfElementLocated(
By.xpath("//*[@id = \"rso\"]/li[1]/div/h3/a/em")));
}
}

转载于:https://www.cnblogs.com/feifeidxl/p/4514787.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
<think>好的,我现在需要帮助用户了解如何使用Selenium和BDD构建Web自动化测试框架,并提供示例、教程或最佳实践。首先,我得回忆一下BDD和Selenium的结合使用方式,尤其是常见的工具链。用户提到的引用中有提到Behave和Cucumber,所以可能需要以Python中的Behave框架为例。 首先,我应该明确BDD的核心概念,即通过自然语言编写场景,然后映射到具体的测试代码。Selenium负责浏览器自动化,而BDD框架(如Behave)则管理测试用例的结构和执行。需要分步骤说明如何设置环境、编写Feature文件、实现步骤定义,以及整合Selenium。 然后,用户可能需要一个具体的示例,包括代码片段。例如,展示一个登录功能的测试场景,从Feature文件到步骤定义的Python代码,再到使用Selenium进行页面操作。同时,要确保示例符合最佳实践,比如页面对象模式(Page Object Model)的使用,以提高代码的可维护性。 接下来,教程部分需要详细列出步骤:安装必要的库(Behave、Selenium、WebDriver管理器),创建项目结构,编写Feature文件,实现步骤定义,集成Selenium,并加入页面对象。可能还需要提到如何运行测试和生成报告。 关于最佳实践,我需要强调模块化设计、数据驱动测试、并行执行(可能涉及Selenium Grid)、等待机制、环境配置管理和持续集成。这些点可以引用用户提供的资料,比如引用[2]提到的Selenium Grid,引用[4]关于BDD库的使用,引用[5]中的阶段化实施方法。 另外,用户提供的引用中有提到测试数据管理和投资回报率评估,但用户当前的问题可能更关注技术实现,所以这些可以作为补充的最佳实践,但可能不是重点。需要确保回答结构清晰,分步骤说明,并包含实际代码示例。 最后,生成相关问题时要围绕用户可能进一步询问的点,比如框架扩展、数据驱动测试、并行处理、CI/CD集成以及报告生成等。这样可以帮助用户深入探索相关主题。</think># 如何使用 Selenium 和 BDD 构建 Web 自动化测试框架 ## 一、核心组件选择 1. **BDD框架选择**:Python推荐使用$behave$,Java推荐$Cucumber-JVM$ 2. **浏览器驱动**:使用$webdriver-manager$自动管理浏览器驱动版本 3. **页面对象模式**:通过$BasePage$类封装通用操作,提高代码复用率 ## 二、实现步骤与示例 ### 1. 环境搭建 ```bash pip install behave selenium webdriver-manager ``` ### 2. 创建项目结构 ``` features/ ├── login.feature ├── steps/ │ └── login_steps.py └── pages/ ├── base_page.py └── login_page.py ``` ### 3. 编写Feature文件(Gherkin语法) ```gherkin Feature: 用户登录功能 Scenario: 成功登录 Given 打开登录页 "https://example.com/login" When 输入用户名 "testuser" 和密码 "Pass123" And 点击登录按钮 Then 应显示欢迎消息 "欢迎回来" ``` ### 4. 实现步骤定义(Python示例) ```python from behave import * from selenium.webdriver import Chrome from pages.login_page import LoginPage @given('打开登录页 "{url}"') def step_open_login(context, url): context.driver = Chrome() context.login_page = LoginPage(context.driver) context.driver.get(url) @when('输入用户名 "{username}" 和密码 "{password}"') def step_input_credentials(context, username, password): context.login_page.enter_username(username) context.login_page.enter_password(password) ``` ### 5. 页面对象封装 ```python # pages/login_page.py from selenium.webdriver.common.by import By from .base_page import BasePage class LoginPage(BasePage): USERNAME_INPUT = (By.ID, 'username') PASSWORD_INPUT = (By.ID, 'password') def enter_username(self, text): self.find_element(*self.USERNAME_INPUT).send_keys(text) ``` ## 三、最佳实践 1. **分层架构**:分离$features$、$steps$和$pages$层级[^4] 2. **数据驱动测试**:使用$scenario outline$实现多数据集测试 ```gherkin Examples: | username | password | | valid_user | valid_pwd | | empty_user | any_pwd | ``` 3. **并行执行**:结合$Selenium Grid$实现跨浏览器测试[^2] 4. **智能等待**:使用显式等待代替固定等待 ```python from selenium.webdriver.support.ui import WebDriverWait WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID, 'welcome')) ) ``` ## 四、持续集成 1. 在Jenkinsfile中添加测试阶段 2. 使用Allure生成可视化测试报告 ```bash behave -f allure_behave.formatter:AllureFormatter -o reports/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值