3.6 Web自动化 ---- 常用API(WebElement 和WebDriver对象常用)
程序员文章站
2024-03-18 19:42:16
...
一、 WebElement对象API常用API
1. 常用基本API
2. 键盘输入操作
3. python代码练习
import time
from SeleniumWeb import openBrowser
from selenium.webdriver.common.by import By
# 键盘使用
from selenium.webdriver.common.keys import Keys
driver = openBrowser.openBrowser("Chrome")
driver.get("https://www.baidu.com")
time.sleep(2)
input_ele = driver.find_element(By.ID, "kw") # 百度输入框元素
button_ele = driver.find_element(By.ID, "su") # 百度一下按钮
# 1. 输入框内容清除: clear()
input_ele.clear()
# 2. 输入框输入内容: sendKey()
input_ele.send_keys("鬼怪")
# 3. 点击事件: click()
# button_ele.click()
time.sleep(2)
# 4. 获取元素标签名
print("tag属性值:" + input_ele.tag_name)
# 5. 获取元素其他属性值: 不支持输入tag和text,否则返回None,元素属性不存再也会返回None
print("元素id=" + input_ele.get_attribute("id"))
# 6. 获取文本值
print("文本内容:"+ button_ele.text)
# 7. 查看元素是否可见,结果:True/False 针对不可见元素是不能操作的,否则会报错:element is not visible
print("百度一下按钮是否显示:" + button_ele.is_displayed())
# 8. 表单提交,一般用于接口form表单元素提交
# button_ele.submit()
# 4. 键盘常用操作
# input_ele.send_keys(Keys.CONTROL, "a") # 4.1 全选:ctrl+a
# input_ele.send_keys(Keys.CONTROL, "x") # 4.2 剪贴:ctrl+x
# input_ele.send_keys(Keys.CONTROL, "c") # 4.3 复制:ctrl+c
# input_ele.send_keys(Keys.CONTROL, "v") # 4.4 粘贴:ctrl+v
# input_ele.send_keys(Keys.CONTROL, "v")
# input_ele.send_keys(Keys.ENTER) # 4.5 回车:Enter
# input_ele.send_keys(Keys.BACK_SPACE) # 4.6 删除:BACK_SPACE或者BACKSPACE
# input_ele.send_keys(Keys.SPACE) # 4.7 空格:SPACE
time.sleep(3)
openBrowser.closeBrowser(driver)
4. java代码练习
public class WebElementAPI {
public static void main(String[] args) {
// 元素常用API
WebDriver driver = OpenBrowser.openBrower("Chrome");
driver.get("https://www.baidu.com");
WebElement input_ele = driver.findElement(By.id("kw")); // 百度输入框元素
WebElement button_ele = driver.findElement(By.id("su")); // 百度一下按钮
input_ele.clear(); // 1. 输入框内容清除: clear()
input_ele.sendKeys("鬼怪"); // 2. 输入框输入内容: sendKey()
button_ele.click(); // 3. 点击事件: click()
try {
Thread.sleep(3000); // sleep 3秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 4. 获取元素标签名
System.out.println("标签名是:"+ input_ele.getTagName());
// 5. 获取元素其他属性值:不支持输入tag和text,否则返回null,元素属性不存再也会返回null
System.out.println("id属性是:"+input_ele.getAttribute("id"));
// 6. 获取元素文本值
System.out.println("百度一下按钮的文本值:"+button_ele.getText());
// 7. 元素是否可见: 结果true/false,针对不可见元素是不能操作的,否则会报错:element is not visible
System.out.println("百度一下按钮是否显示:"+button_ele.isDisplayed());
// 8. 提交表单: submit()
// form_ele.submit
button_ele.submit();
// 9. 键盘常见操作
// input_ele.sendKeys(Keys.CONTROL,"a"); // 4.1 CTRL+a 全选
// input_ele.sendKeys(Keys.CONTROL,"x"); // 4.2 剪切 : CTRL +x
// input_ele.sendKeys(Keys.CONTROL,"c"); // 4.3 复制 : CTRL +c
// input_ele.sendKeys(Keys.CONTROL,"v");
// input_ele.sendKeys(Keys.CONTROL,"v"); // 4.4 粘贴 : CTRL +v
// input_ele.sendKeys(Keys.ENTER); // 4.5 回车 : ENTER
// input_ele.sendKeys(Keys.BACK_SPACE); // 4.6 删除 : BACK_SPACE
// input_ele.sendKeys(Keys.SPACE); // 4.7 空格 :SPACE
OpenBrowser.closeBrower(driver);
}
}
二、 WebDriver对象常用操作API
1. 常用API汇总
2. 基于python练习代码
# -*-coding:utf8-*-
"""
=========================================================
@Description:WebDriver对常用API
@Author: Lujier @Iime: 2020/9/15
@File: WebDriverAPI.py @Software :IntelliJ IDEA
========================================================
"""
import time
from SeleniumWeb import openBrowser
from selenium.webdriver.common.by import By
driver = openBrowser.openBrowser("Chrome")
# 1. 访问指定url
driver.get("https://www.baidu.com")
# 2. 获取当前访问的url
print("当前访问url: " + driver.current_url)
# 3. 获取当前页面的title
print("当前页面标题: " + driver.title)
# 4. 获取当前页面源代码
source_codes = driver.page_source
driver.find_element(By.XPATH, "//a[contains(text(),'新闻')]").click() # 点击则会出现新窗口,显示当前天气
time.sleep(2)
# 5. 获取窗口
# 5.1获取当前窗口
print("当前窗口:" + driver.current_window_handle)
# 5.2 获取所有窗口
print("所有窗口:{}".format(driver.window_handles))
time.sleep(3)
driver.get("https://www.12306.cn/index/")
# 6. 页面操作
# 6.1 刷新当前页面
driver.refresh()
time.sleep(3)
# 6.2 浏览器回退操作
driver.back()
time.sleep(3)
# 6.3 浏览器前进操作
driver.forward()
time.sleep(3)
# 7. 窗口操作
# 7.1 窗口最大化
driver.maximize_window()
# 7.2 获取窗口大小
driver.get_window_size()
# 7.3 获取窗口位置:左上角的坐标
print("窗口位置:{}".format(driver.get_window_position()))
# 7.4 设置位置
driver.set_window_position(x=8,y=8)
# 7.5 设置窗口大小
driver.set_window_size(width=10, height=30)
# 5. 关闭当前窗口
driver.close()
# 6. 关闭驱动对象以及相关的窗口
driver.quit()
3. 基于Java练习代码
package com.webAuto.eleLocBase;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriver.Navigation;
import org.openqa.selenium.WebDriver.Window;
import com.lujier.demo.OpenBrowser;
/**
* TODO
* @File: WebDriverAPI.java
* @Author: Lujier @SINCE: 2020年9月15日 下午12:59:44
* */
public class WebDriverAPI {
public static void main(String[] args) throws InterruptedException {
// WebDriver常用API
WebDriver driver = OpenBrowser.openBrower("Chrome");
// 1. 访问指定url
driver.get("https://www.baidu.com");
// 2. 获取当前访问url
System.out.println("当前访问url = " + driver.getCurrentUrl());
// 3. 获取当前页面的title
System.out.println("当前页面标题: " + driver.getTitle());
// 4. 获取当前页面源代码
String source_codes = driver.getPageSource();
driver.findElement(By.xpath("//a[contains(text(),'新闻')]")).click(); // 点击则会出现新窗口,显示新闻
Thread.sleep(3000);
// 5. 获取窗口
// 5.1获取当前窗口
System.out.println("当前窗口:" + driver.getWindowHandle());
// 5.2 获取所有窗口:Set<String],内部输出toString
System.out.println("所有窗口:" + driver.getWindowHandles());
// 6. 获取navigate对象: 关于浏览器的基本操作,大部分由navigate对象提供
Navigation navigate = driver.navigate();
// 6.1 访问指定界面
navigate.to("https://www.12306.cn/index/");
Thread.sleep(3000);
// 6.2 刷新当前页面
navigate.refresh();
Thread.sleep(3000);
// 6.3 浏览器回退操作
navigate.back();
Thread.sleep(3000);
// 6.4 浏览器前进操作
navigate.forward();
// 7. 获取Window对象
Window window = driver.manage().window();
// 7.1 窗口最大化
window.maximize();
// 7.2 获取窗口位置
window.getPosition().getX(); // 左上角坐标
window.getPosition().getY();
// 7.3 获取窗口大小
window.getSize();
window.getSize().getWidth(); // 宽度
window.getSize().getHeight(); // 宽度
Point targetPosition = new Point(50,50);
// 7.4 设置位置
window.setPosition(targetPosition);
// 7.5 设置窗口大小
Dimension targetSize = new Dimension(800,600);
window.setSize(targetSize);
// 5. 关闭当前窗口
driver.close();
// 6. 关闭驱动对象以及相关的窗口
driver.quit() ;
}
}