我是靠谱客的博主 大气野狼,最近开发中收集的这篇文章主要介绍3.3 Web自动化 ---- 元素定位(基本定位方式)一、基本元素定位方式:二  示例:百度界面(Chrome)三 、 python实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、基本元素定位方式:

  1.    通过id(一般id唯一) :   By.id
  2.    通过元素name属性来定位:  By.name
  3.    通过元素标签名来获取元素:  By.tagName
  4.    通过元素class属性值来定位: By.className
  5.    通过元素超链接的文本值来获取元素:  By.linkText
  6.     通过元素超链接的部分文本值来获取元素:  By.partialLinkText

二  示例:百度界面(Chrome)

      我们需要完成的功能:

           启动浏览器,进入百度,百度输入框输入:地狱使者, 点击“百度一下”按钮

三、 Java 代码实现

1.  封装的浏览器打开关闭函数功能代码如下(可忽略):

package com.lujier.demo;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class OpenBrowser {

	/**
	   * 打开浏览器,目前支持chrome,firefox,ie
	 * @param browser   浏览器
	 * @return  WebDriver对象
	 */
	public static WebDriver openBrower(String browser) {
		if(browser.equalsIgnoreCase("chrome")) {
		// 一、 Chrome浏览器V80
		System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
		ChromeDriver chromedriver=new ChromeDriver();
		return chromedriver;
		}else if (browser.equalsIgnoreCase("firefox")){
			// 二、 火狐浏览器 V56
			System.setProperty("webdriver.firefox.bin", "D:\APP_Installs\Other\Mozilla Firefox\firefox.exe"); 
			System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe"); 
			FirefoxDriver firefoxDriver = new FirefoxDriver();
			return firefoxDriver;
		}else {
			// 三、IE浏览器V11: IE驱动版本与Selenium相同就好了,selenium3.14.59,驱动版本也选择3.14
			System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
			DesiredCapabilities capabilities = new DesiredCapabilities();
			capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
			capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
			InternetExplorerDriver ieDriver = new InternetExplorerDriver(capabilities);
			return ieDriver;
		}
		
	}
	public static void closeBrower(WebDriver driver) {
		// 关闭浏览器
		driver.close();
	}
}

2.   启动浏览器,进入百度,百度输入框输入:地狱使者, 点击“百度一下”按钮

package com.webAuto.eleLocBase;

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

import com.lujier.demo.OpenBrowser;
public class BaseLocEle {
	// 元素基本定位
	public static void main(String[] args) {
		WebDriver driver = OpenBrowser.openBrower("chrome"); 
		//  1. ID方式定位
		WebElement ele = driver.findElement(By.id("kw")); // 百度输入框元素
		/**
		//  2. class 方式定位
		WebElement ele1 = driver.findElement(By.className("s_ipt"));
		//  3. name 方式定位
		WebElement ele2 = driver.findElement(By.name("wd"));
		//	4. 通过标签名定位	 
		driver.findElement(By.tagName("标签名"));
		// 5. 通过超链接文本
		driver.findElement(By.linkText("超链接文本"));
		// 6. 通过超链接部分文本
		driver.findElement(By.partialLinkText("超链接部分文本"));
		// 获取存在一批有相同特性的元素,findElements返回的是一个集合
		 List<WebElement> = driver.findElements();  
		 */
		ele.sendKeys("地狱使者");  // 百度输入框输入内容
		driver.findElement(By.id("su")).click();; // 点击百度一下按钮
        closeBrower(driver);
	}

}

三 、 python实现

1. 封装的浏览器打开/关闭函数

import os
from selenium import webdriver


def open_browser(browser:str):
    browser = browser.lower().strip()
    driver = None
    drivers_path =  os.path.join(os.path.dirname(__file__),"drivers")
    if browser == "chrome":
        driver_path = os.path.join(drivers_path,"chromedriver.exe")
        driver = webdriver.Chrome(driver_path)
    elif browser == "firefox":
        driver_path = os.path.join(drivers_path, "geckodriver.exe")
        driver = webdriver.Firefox(driver_path)
    else:
        driver_path = os.path.join(drivers_path, "IEDriverServer.exe")
        driver = webdriver.Ie(driver_path)
    return driver


def close_browser(driver:webdriver):
    driver.close()

注意

   1. 元素的class属性可能会有多个

2. class属性值多个,定位时:

      不建议class内容写全,如下:

                ele = driver.find_element(By.CLASS_NAME, "btn self-btn bg s_btn") (python写法)

               WebElement ele = driver.findElement(By.className("btn self-btn bg s_btn"));  (java写法)

        可以就针对一个class的一个属性值来定位:

                 ele = driver.find_element(By.CLASS_NAME, "self-btn") (python写法)

               WebElement ele = driver.findElement(By.className "self-btn"));  (java写法)

最后

以上就是大气野狼为你收集整理的3.3 Web自动化 ---- 元素定位(基本定位方式)一、基本元素定位方式:二  示例:百度界面(Chrome)三 、 python实现的全部内容,希望文章能够帮你解决3.3 Web自动化 ---- 元素定位(基本定位方式)一、基本元素定位方式:二  示例:百度界面(Chrome)三 、 python实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部