Selenium Selenium 学习笔记 (一)

bobo · 2020年05月29日 · 最后由 doladola 回复于 2020年11月15日 · 3316 次阅读

Selenium 学习笔记

有用的链接

  1. selenium 官网: https://www.selenium.dev/
  2. Chromedriver 下载链接: https://chromedriver.chromium.org/
  3. webDriver 的语法: https://www.selenium.dev/documentation/zh-cn/webdriver/
  4. webdriver cookie 的代码使用: https://www.selenium.dev/documentation/zh-cn/support_packages/working_with_cookies/ 环境: Mac OS, Java

安装

  • maven install selenium <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> java
  • chromeDriver install
    1. 下载 WebDriver 二进制文件: https://chromedriver.chromium.org/
    2. 系统 PATH 环境变量: export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile, 使用 chromedriver 命令检测是否安装成功
  • chrome debug
    1. 找到 google chrome 存放的位置, 再配置环境变量
    2. Google\ Chrome --remote-debugging-port=9222 使用这个命令查看, 是否配置好. Google Chrome 之间是空格, 命令行时,不要忘记添加反斜杠

代码编写

获得页面

driver.get(String url)

public static void setup(){
        System.setProperty("webdriver.chrome.driver", "/Users/xhou/WebDriver/bin/chromedriver");
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://work.weixin.qq.com/wework_admin/frame");
    }

get 代码如下:

浏览器页面复用

  1. 在浏览器全部关闭的情况下, 打开 debug 模式: Google\ Chrome --remote-debugging-port=9222
  2. 在代码中作如下编写

cookie 使用

  1. 文档: https://www.selenium.dev/documentation/zh-cn/support_packages/working_with_cookies/
  2. 保存 cookie

    1. 打开页面;
    2. 扫码/账号登录
    3. 使用浏览器复用技术, 在同一个浏览器加载页面,在这一步, webdriver 里才获取了登录后的 cookie
    4. 把 cookie 存入文档,或变量. 现在的代码是存入文档
  3. 设置 cookie

    1. 打开页面
    2. 从文档里读出 cookie, 再设置到 webDriver 中
    3. 可以看到浏览器自动登录了

读写代码总结

  1. FileReader & BufferedReader
    1. 区别: 是否耗费 IO
    2. Buffered 使用缓冲区的, FileReader 是一个字节一个字节读, 很耗费 IO, 性能差; BufferedReader 是放入缓冲区, 再从缓冲区读取, 性能好
  2. FileWriter & BufferedWriter
    1. 区别: 是否耗费 IO
    2. Buffered 使用缓冲区的, 所以 bufferedWriter.write(String s) 后, 一定要使用 bufferedWriter.flush(), 不然数据不会写进文档
    3. 关于 flush() 的加强说明, 如果没有调用 bufferedWriter.close() 方法, 需要使用 flush() 才能写入数据; 如果使用 close() 方法, 不需要添加 flush(), 因为 close() 里包含了 flush() 方法
  3. FileReader/FileReader/FileWriter/BufferedWriter 一定要记得 close()

String.split(regex,limit) 用法

案例: String date = "date:Wed Jan 10 10:43:36 CST 2012 "
我想取 date 后面的内容: date.split[":",2]

SimpleDateFormat 的用法

参考资料: https://www.runoob.com/java/java-date-time.html
Date dateValue = new Date()
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
date = simpleDateFormat.parse(dateValue);

踩坑记录

selenium Driver/webDriver 版本不一致, 导致排查不到错误原因.确保版本一致

共收到 1 条回复 时间 点赞

请教楼主:
我的环境变量已经配置了 Google 的位置,但是为啥输入【Google\ Chrome】提示【-bash: Google Chrome: command not found】

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册