Selenium Web自动化

官方文档:https://www.selenium.dev/selenium/docs/api/javascript/index.html

初始化

npm init -y

安装selenium-webdriver

npm install selenium-webdriver --save

安装chromedriver

npm install chromedriver --chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver

xpath

https://www.runoob.com/xpath/xpath-tutorial.html

xpath定位元素

//input[@id=“kw”]
在这里插入图片描述
//a[@name=“tj_trhao123”]
在这里插入图片描述

//div[@id=“u1”]/a[3]
在这里插入图片描述

css元素选择器
https://www.runoob.com/cssref/css-selectors.html


安装typescript

npm install -g typescript

npm install @types/selenium-webdriver --save-dev

设置日期控件数据

Selenium Web自动化05-使用typescript并设置单例模式

import { SingleInstance } from './singleInstance'

// 日期控件指定时间
async function main() {
    const driver = SingleInstance.create_drive();

    await driver.get("https://www.ctrip.com/");

    let jsscript = `document.querySelector('input[id="HD_CheckIn"]').value = "2020-03-03"`
    // await driver.executeScript(jsscript)
    await driver.executeScript((val: string)=> {
        // 执行js方法
        let dom = document.querySelector('input[id="HD_CheckIn') as HTMLInputElement;
        dom.value = val;
    }, "2020-02-02")
}

main();

运行
node excutejs.js
在这里插入图片描述

Selenium Web自动化07-Action模拟行为操作

// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/actions_exports_LegacyTouchSequence.html


import { SingleInstance } from "./singleInstance"

async function run() {

    const driver = SingleInstance.create_drive();

    await driver.get("https://www.baidu.com/");

    const ele = await driver.findElement({ css: 'a[name="tj_briicon"]' });

    const actions = driver.actions();

    // 移动到 ele 暂停1s perform执行action
    await actions.move({ origin: ele }).pause(1000).perform();

    // 寻找mp3元素
    const mp3 = await driver.findElement({ css: 'a[name="tj_mp3"]' });

    // 移动到元素上
    await actions.move({ origin: mp3 }).click().perform();


}

run();

运行
在这里插入图片描述在这里插入图片描述
百度识图

import { SingleInstance } from "./singleInstance"

// 百度识图
async function run() {
    const driver = SingleInstance.create_drive();

    await driver.get("https://www.baidu.com/");

    const soutu = await driver.findElement({ css: 'span[class="soutu-btn"]' });

    await soutu.click();

    const upload = await driver.findElement({ css: 'input[class="upload-pic"]' });

    // 设置文件路径(绝对路径)
    await upload.sendKeys(__dirname + '/timg.jpg');

}

run();

在这里插入图片描述

alert相关
在这里插入图片描述

import { SingleInstance } from './singleInstance';

async function run (){

    const driver = SingleInstance.create_drive();
    await driver.get('http://39.107.96.138:3000/signin');

    const username = await driver.findElement({css:'#name'})
    await username.sendKeys('test10');
    const password = await driver.findElement({css:'#pass'})
    await password.sendKeys('123456');

    const submit = await driver.findElement({css:'[type="submit"]'});
    await submit.click();

    await driver.get('http://39.107.96.138:3000/user/test10');

    const ele = await driver.findElement({css:'a[class="topic_title"]'});
    await ele.click();

    const del = await driver.findElement({css:'[title="删除"]'});
    await del.click();

    // 切换到窗口页面
    const alert= await driver.switchTo().alert();
    // 获取文本
    console.log(await alert.getText());
    // 删除
    await alert.accept();

}

run();

切换ifram

import { SingleInstance } from './singleInstance';


async function run() {
    const driver = SingleInstance.create_drive();

    await driver.get('https://login.anjuke.com/login/form');

    // 1. iframe webelement;
    const iframe = await driver.findElement({ css: 'iframe#iframeLoginIfm' })

    await driver.switchTo().frame(iframe);

    const phone = await driver.findElement({ id: "phoneIpt" });
    await phone.sendKeys("1234567")


    // 从iframe切换出来
    await driver.switchTo().defaultContent();
    // 切到"关于我们"
    const ele = await driver.findElement({ css: 'a[rel="nofollow"]' });
    await ele.click(); 
}

run();

切换新的tab

import { SingleInstance } from "./singleinstance";

async function run (){
    
    const driver = SingleInstance.create_driver();

    await driver.get("https://www.baidu.com/");
    const input = await driver.findElement({css:'#kw'});
    await input.sendKeys("helloworld");

    const btn = await driver.findElement({css:'#su'});
    await btn.click();

    await driver.sleep(2000);
    const res = await driver.findElement({css:'div[id="1"]>h3>a'});
    await res.click();

    // 切换窗口
    const allwindows = await driver.getAllWindowHandles();
    await driver.switchTo().window(allwindows[1]);

    const baikeInput = await driver.findElement({css:'#query'});
    await baikeInput.clear();
    await baikeInput.sendKeys("hahahah");
}

run();

等待

import { SingleInstance } from './singleInstance'
import { until, By } from 'selenium-webdriver';


async function run() {
    const driver = SingleInstance.create_drive();
    await driver.get("https://www.baidu.com/");
    const input = await driver.findElement({ css: '#kw' });
    await input.sendKeys("helloworld");

    const btn = await driver.findElement({ css: '#su' });
    await btn.click();

    //  等待元素加载出来 最长等待时间为10秒
    const res = await driver.wait(until.elementLocated(By.css('div[id="1"]>h3>a')), 10 * 1000);
    // await driver.sleep(2000);
    // const res = await driver.findElement({css:'div[id="1"]>h3>a'});
    await res.click();
}

run();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值