Selenium4自动化

引入

import time
from selenium import webdriver
定义一个driver的变量,用来接收实例化后的浏览器
driver = webdriver.Chrome()
使用get方法,访问网址
driver.get(‘https://www.bilibili.com/’)
time.sleep(2)

元素定位方式

通过id定位,By.ID

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.baidu.com/”)
driver.find_element(By.ID, “kw”).send_keys(“selenium”)
driver.find_element(By.ID, “su”).click()
sleep(3)

通过类名定位,By.CLASS_NAME

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.bilibili.com/”)
只获取class属性的第一个元素
driver.find_element(By.CLASS_NAME,’nav-search-input’).send_keys(“2024新年快乐”)
driver.find_element(By.CLASS_NAME,’channel-link’).click()
获取class属性的所有元素
driver.find_elements(By.CLASS_NAME,’channel-link’)[4].click()
for ele in driver.find_elements(By.CLASS_NAME,’channel-link’):
print(ele.text)
错误用法
driver.find_element(By.CLASS_NAME,’icon-bg icon-bg__channel’).click()
sleep(3)

通过标签名定位,By.TAG_NAME

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.bilibili.com/”)
driver.find_element(By.TAG_NAME, “input”).send_keys(“学习selenium”)
不推荐
driver.find_elements(By.TAG_NAME, “input”)[50].click()

通过名称定位,By.NAME

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
只获取属性的第一个元素
driver.find_element(By.NAME, ‘wd’).send_keys(“软件测试老白”)
获取属性的所有元素
driver.find_elements(By.NAME, ‘wd’)[0].send_keys(“软件测试老白”)

通过链接文本定位,By.LINK_TEXT

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
driver.find_element(By.LINK_TEXT, ‘新闻’).click()

通过链接部分文本定位,By.PARTIAL_LINK_TEXT

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
driver.find_element(By.PARTIAL_LINK_TEXT, ‘闻’).click()

通过css_selector定位,By.CSS_SELECTOR

当一个元素无法直接定位,也就是没有id,name等确定标识,这个时候我们需要考虑使用css selector定位器。

它是一种通过CSS样式选择器来定位元素的方法

CSS常用汇总

选择器格式示例示例说明
标签选择器html标签input选择所有<input>元素
ID选择器#id属性值#kw选择所有id=’kw’的元素
类选择器.class属性值.nav-search-input选择所有class=’nav-search-input’的元素
属性选择器1[属性名][name=”wd”]选择所有name等于”wd”的元素
组合选择器标签加属性描述input.s_ipt选择所有class=’_ipt’的<input>元素
父子关系元素1>元素2div>a选择所有父级是<div>的<a>元素
后代关系元素1 元素2div a选择<div>中的所有<a>元素
第一子元素:first-childa:first-child选择所有<a>元素且该元素是其父级的第一个元素
最后一个元素:last-childa:last-child选择所有<a>元素且该元素是其父级的最后一个元素
顺序选择器:nth-child(n)a:nth-child(2)选择所有<a>元素且该元素是其父级的第二个子元素

pyinstaller

pyinstaller的-F参数是指将Python程序打包成一个单独的可执行文件1

pyinstaller相关参数如下12

  • -F,–onefile:打包一个单个文件。如果你的代码都写在一个.py文件的话,可以用这个。如果是多个.py文件就千万别用。
  • -D,–onedir:打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,代码易于维护。
  • -K,–tk:在部署时包含TCL/TK。
  • -a,–ascii:不包含编码,在支持Unicode的python版本上默认包含所有的编码。
  • -d,–debug:产生debug版本的可执行文件。
  • -w,–windowed,–noconsole:使用Windows子系统执行,当程序启动的时候不会打开命令行(只对Windows有效)。
  • -c,–nowindowed,–console:使用控制台子系统执行(默认)(只对Windows有效)。