配套文件

chromedriver.py
96.0.4664.45_chrome64_stable_windows_installer .py
下载之后, 修改后缀名 py 为 exe

安装配置 浏览器

历史浏览器下载地址: https://www.chromedownloads.net/
浏览器驱动chromedriver下载地址:
http://chromedriver.storage.googleapis.com/index.html
http://npm.taobao.org/mirrors/chromedriver/

selenium之 chromedriver与chrome版本映射表:

亲测 selenium 4.1.3版本 +chromedriver_win32_96.0.4664.45版本 + 96.0.4664.45_chrome64_stable_windows_installer 版本 匹配成功

image.pngimage.pngimage.png

如何查看浏览器版本

菜单 ——> 帮助——> 关于Chrome

image.png

如何设置 chromedriver

把下载好的 chromedriver.exe 放到 浏览器默认安装的目录即可, 也可以指定位置
下图是浏览器默认安装的位置是在C盘
image.png

项目安装selenium 启动

  1. pip install selenium
  1. pip show selenium
  1. from selenium import webdriver
  2. from selenium.webdriver.chrome.options import Options # 导入 设置浏览器指定文件目录
  3. from selenium.webdriver.chrome.service import Service # 使用这个指定 chromedriver.exe 的位置
  4. if __name__ == '__main__':
  5. js = "window.open('{}','_blank');" # 设置在新标签上打开
  6. option = Options()
  7. # 设置chrome所在的位置
  8. option.binary_location = "C:/Users/chentao/AppData/Local/Google/Chrome/Application/chrome.exe"
  9. # executable设置chromedriver所在位置
  10. driver = webdriver.Chrome(service=Service("C:/Users/chentao/AppData/Local/Google/Chrome/Application/chromedriver.exe"),options=option) # 启动浏览器
  11. driver.get("https://www.baidu.com") # 打开第一个页面
  12. driver.execute_script(js.format("https://www.baidu.com")) # 会等待第一个页面

selenium各种功能

selenium标签页的切换

  • 当selenium控制浏览器打开多个标签页时,如何控制浏览器在不同的标签页中进行切换呢?需要我们做以下两步:
    ①、获取所有标签页的窗口句柄
    ②、利用窗口句柄字切换到句柄指向的标签页
  • 这里的窗口句柄是指:指向标签页对象的标识
  1. # 1. 获取当前所有的标签页的句柄构成的列表
  2. current_windows = driver.window_handles
  3. # 2. 根据标签页句柄列表索引下标进行切换
  4. driver.switch_to.window(current_windows[0])

打开网页

在新标签页打开

  1. js = "window.open('{}','_blank');" # 设置在新标签上打开
  2. driver.execute_script(js.format("http://baidu.com"))
  3. driver.switch_to.window(driver.window_handles[-1])

切换到最后一个标签页

  1. driver.switch_to.window(driver.window_handles[-1])

切换到指定标签页

  1. driver.switch_to.window(driver.window_handles[2])

在frame标签操作

  1. # 方案一:根据iframe框架的id切换iframe标签
  2. # driver.switch_to_frame('login_frame')
  3. # 方案二:根据iframe框架的xpath路径切换iframe标签
  4. el_frame = driver.find_element_by_xpath('//*[@id="login_frame"]')
  5. driver.switch_to_frame(el_frame)

总结:
①、切换到定位的frame标签嵌套的页面中driver.switch_to.frame(通过find_element_by函数定位的frame、iframe标签对象)
②、利用切换标签页的方式切出frame标签

  1. windows = driver.window_handles
  2. driver.switch_to.window(windows[0])

[

](https://blog.csdn.net/qq_44096670/article/details/115395331)

获取元素定位

By

  • By.NAME
  • By.CLASS_NAME
  • By.ID
  • By.XPATH ```python from selenium.webdriver.common.by import By

driver = webdriver.Chrome(“chromedriver.exe”)

driver.find_element(By.NAME, “NAME”) driver.find_element(By.CLASS_NAME, “CLASS_NAME”) driver.find_element(By.ID, “ID”) driver.find_element(By.XPATH, ‘//*[@id=”su”]’)

  1. <a name="ymfxq"></a>
  2. ### 点击
  3. ```python
  4. driver.find_element(By.XPATH, '//*[@id="su"]').click()

输入内容

  1. driver.find_element(By.XPATH, '//*[@id="su"]').send_keys("你好世界")

清空输入框

  1. driver.find_element(By.XPATH, '//*[@id="su"]').clear()