python selenium

selenium库

当前selenium版本4.7.2
在这里插入图片描述


打开Chrome

selenium通过driver调起本地安装的浏览器,需要调用同本地Chrome浏览器版本对用chromedriver才能成功调起。
(版本不一致会导致报错:Message: unknown error: Runtime.executionContextCreated has invalid 'context)
(‘chromedriver’ executable needs to be in PATH)

  1. 查看本地安装的chrome版本
  2. 获取对应版本的chromedriver
  3. 通过chromedriver调起chrome浏览器。
#windows env
from selenium import webdriver

browser = webdriver.Chrome(executable_path = r'xxx\chromedriver.exe')
browser.get("http://www.baidu.com")
print(browser.page_source)
#browser.close() 

窗口操作
browser.maximize_window() #窗口最大化
driver.switch_to.window(driver.window_handles[-1])  #定位到最新打开窗口
driver.switch_to.window(driver.window_handles[-2]) #定位到倒数第二个窗口
driver.switch_to.window(driver.window_handles[0]) #定位最开始的页面

元素获取
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome(chromeDriverPath)
browser.find_element(By.XPATH,'//*[@id="kw"]').send_keys("python")
browser.find_element(By.CLASS_NAME,'soutu-btn').click()
browser.find_element(By.ID,'su').click()

By.xx元素定位方式

class By:
    """
    Set of supported locator strategies.
    """
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

元素操作
  • get(url) 打开网页
  • send_keys(str) 输入
  • click() 点击
  • clear() 清空
  • text 获取标签文本内容
  • get_attribute(‘属性’) 获取元素属性值
  • close() 关闭当前标签页
  • quit() 关闭浏览器,释放进程

add_argument相关
from selenium.webdriver.chrome.options import Options

options = Options()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
browser = webdriver.Chrome(chromeDriverPath,chrome_options = option)
option.add_argument('--ignore-cetificate-errors') #清除提示:chrome正受到自动测试软件的控制
option.add_argument('--ignore-ssl-errors') # 忽略ssl错误
options.add_argument('headless') #隐藏浏览器运行
#调起的浏览器不弹出记住密码
prefs = {"": ""}
prefs["credentials_enable_service"] = False
prefs["profile.password_manager_enabled"] = False
options.add_experimental_option("prefs", prefs) 

iframe切换
iframe = driver.find_elements(By.TAG_NAME,'iframe')[0] #找到网页中第一个iframe
driver.switch_to.frame(iframe) #将driver切换到iframe的html
textcontent = driver.find_element(By.ID,'viewer').text #获取iframe中id='viewer'的文本内容

selenium 自动化过程遇到浏览器显示:您的连接不是私密连接的网站
# 跳过私密链接
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--ignore-certificate-errors')
driver=webdriver.Chrome(options=options)
chrome_options.add_argument('--headless')
同脚本下的二次登录

不要driver.quit(),可以使用同一个driver完成两次登录。

进度条

用于固定时间等待

import time

def ProcessBar(waiting):
    scale,i = 50,0
    wait_per_second = waiting/100
    start = time.perf_counter()
    while i<101:
        a = '*' * (i//2)
        b = '.' * (scale - i//2)
        c = (i / scale) * scale
        dur = time.perf_counter() - start
        print("\r{:^3.0f}%[{}-->{}]{:.2f}s".format(c, a, b, dur), end='')
        time.sleep(wait_per_second)
        i+=1
ProcessBar(12) #12s

用于随机时间等待 放在while try except

import time 
for i in range(0,10):
    s = '*'*i
    time.sleep(1)
    print("\r[{}]".format('waiting'+s),end='')
问题

USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 连到系统上的设备没有发挥作用。 (0x1F)

option = webdriver.ChromeOptions()
# 防止打印一些无用的日志
option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
driver = webdriver.Chrome(options=option)
命令总结
#获得同级目录下div数目
item = driver.find_elements_by_xpath("//section[@class='content']/div/div/div")
print('\n',len(item))

webelement对象属性

在这里插入代码片

linux本地测试

重点是结合shell脚本完成各种测试任务。

signal 跳出

用于一些执行语句失败无法跳出的情况。

import os,signal

temp = os.popen(command)
signal.signal(signal.SIGALRM, self.recall)
#定时2秒,超时则执行回调函数
signal.alarm(2)
output = temp.read() #给语句两秒时间返回

def recall(self,signum, frame):
	self.log_file.write("测试未在指定时间内退出,脚本中止执行。" + '\n')
	self.log_file.close()
	print("测试未在指定时间内退出,脚本中止执行。")
	return False

ubuntu使用selenium

参考1参考2

  1. 安装chrome

    - [下载](https://www.chromedownloads.net/chrome64linux/) https://www.google.cn/chrome/
    - 解压,这里选择百度网盘下载,解压后将deb文件传到ubuntu。
    - 安装gdebi `apt install gdebi`
    - 安装chrome `gdebi google-chrome-stable_current_amd64.deb`
    
  2. 安装对应版本的chrome driver

    - ubuntu打开浏览器查看安装的chrome版本,找到对应版本的chromedriver并下载。https://registry.npmmirror.com/binary.html?path=chromedriver/
    - 下载,解压出hromedriver。
    - 移动 `mv chromedriver /usr/bin/`
    - 给与执行权限 `chmod +x /usr/bin/chromedriver`
    - 查看版本 `chromedriver -version`
    
  3. 运行测试

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver import ActionChains
    
    chrome_options = Options()
    chrome_options.add_argument('--ignore-certificate-errors')
    # chrome_options.add_argument('--headless')
    driver = webdriver.Chrome(options=chrome_options)
    driver.get('https://www.baidu.com/')
    

Python Playwright

https://blog.csdn.net/zz00008888/article/details/127950173


Xpath获取相关

https://blog.csdn.net/weixin_43865008/article/details/115332404


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值