js css html

前端视角介绍自动化模块selenium-webdriver

2022-04-08  本文已影响0人  祝家庄打烊

首先介绍一下selenium-webdriver,官网上已经说的很明白selenium-webdriver是浏览器自动化库,说白了也就是可以模拟人的行为操作,做一些重复智能化的事情,比如:爬虫和自动化测试。。

第一步,找到浏览器的版本号,我这里用的chrome版本是100.0.4896.60,通过官网(http://chromedriver.storage.googleapis.com/index.html)提供的地址下载驱动放到项目的根节点上。

image.png
image.png

第二步,下载依赖(node和selenium-webdriver)

npm install node --save
npm install selenium-webdriver --save

第三步,讲解编程思路

引用依赖包,依赖包结构出Builder构造函数,利用Builder构造函数实例化一个有关chrome的对象,通过get打开一个地址,findElement找到对应的元素进行操作,click是点击元素、sendKeys是输入内容。这里有个细节要注意:通过click打开新窗口时,就会存在多个窗口的情况,程序会停留在第一个窗口,会出现找不到元素的情况,这里不要急,找到下一个窗口的句柄,通过switchTo进行切换。

const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
  let driver = await new Builder().forBrowser('chrome').build();
  try {
    await driver.get('https://www.jianshu.com/u/bf59b68d2fb6');
    await driver.findElement(By.xpath('//*[@id="note-91073860"]/div/a')).click();
    let curhandle = await driver.getWindowHandle();
    let allhandle = await driver.getAllWindowHandles();
    console.log("curhandle:",curhandle);
    console.log("allhandle:",allhandle);
    let nexthandle = "";
    for(var i=0;i<allhandle.length;i++){
      if(curhandle==allhandle[i]){
        nexthandle = allhandle[i+1]
      }
    }
    await driver.switchTo().window(nexthandle);
    let title = await driver.getTitle();
    console.log(title);

    await driver.findElement(By.xpath('//*[@id="__next"]/footer/div[1]/div[1]/div/textarea')).sendKeys('大神,66666');
    await driver.findElement(By.xpath('//*[@id="__next"]/footer/div[1]/div[1]/div/i')).click();
    await driver.findElement(By.xpath('//*[@id="__next"]/footer/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[1]/span[41]')).click();
  } finally {
    // await driver.quit();
  }
})();
上一篇下一篇

猜你喜欢

热点阅读