当前位置: 首页 > news >正文

爬爬爬——今天是浏览器窗口切换和给所选人打钩(自动化)

学习爬虫路还很长,第一阶段花了好多天了,还在底层,虽然不是我专业要学习的语言,和必备的知识,但是我感觉还挺有意思的。加油,这两天把建模和ai也不学了,唉过年了懒了!

加油坚持就是胜利!!!

先是浏览器窗口切换,这都是给浏览器驱动器发送指令,然后让他去干,很酷!!!!

import timefrom selenium  import webdriver
from selenium.webdriver.common.by import Byurl = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)wd.get(url)element = wd.find_element(By.CSS_SELECTOR,'a')print(element.get_attribute('outerHTML'))
element.click()
#存储下来
mainWindow = wd.current_window_handletime.sleep(5)for handle in wd.window_handles:wd.switch_to.window(handle)print(wd.title)if '必应' in wd.title:breakwd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()time.sleep(5)
#返回窗口
wd.switch_to.window(mainWindow)wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)wd.quit()

代码部分:

1.time-给浏览器时间,webdriver建立驱动浏览器,By-寻找(选择)

import time
from selenium  import webdriver
from selenium.webdriver.common.by import By

2.

url = "https://cdn2.byhy.net/files/selenium/sample3.html"
wd = webdriver.Edge()
wd.implicitly_wait(10)

建立联系,然后用

wd.implicitly_wait(10)———如果没有返回就等待,最多10s

3.


element = wd.find_element(By.CSS_SELECTOR,'a')print(element.get_attribute('outerHTML'))
element.click()

找到标签为‘a’,打印‘a’在浏览器的代码是什么,打印的就是什么!!

然后点击(click())

4.

mainWindow = wd.current_window_handle

将现在的储存起来,便于操作完返回

5.

for handle in wd.window_handles:wd.switch_to.window(handle)print(wd.title)if '必应' in wd.title:break

在浏览器的窗口栏找到有‘必应’这两个字的,然后选择

6.搜索‘hahah’

wd.find_element(By.CSS_SELECTOR,'#sb_form_q').send_keys("hahahah")
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#search_icon').click()

7.

wd.switch_to.window(mainWindow)wd.find_element(By.CSS_SELECTOR,'button').click()
wd.find_element(By.CSS_SELECTOR,'button').click()
time.sleep(5)

然后返回最初的窗口

结束!!!


                                                        --------- 选择框-----

radio,checkbox,select框的选择

代码:

import time
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from selenium.webdriver.common.by import Byurl = "https://cdn2.byhy.net/files/selenium/test2.html"wd = webdriver.Edge()
wd.implicitly_wait(5)wd.get(url)time.sleep(1)
elements = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
#print(elements.get_attribute("outerHTML"))
#print('您选的是:'+elements.get_attribute('value'))#选择 ---------------------------radio
wd.find_element(By.CSS_SELECTOR,'#s_radio input[value="小雷老师"]').click()
element = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
time.sleep(1)
#选择---------------------------checkbox---多选
elements2 = wd.find_elements(By.CSS_SELECTOR,'#s_checkbox input[checked=checked]')
for i in elements2:i.click()
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小雷老师"]').click()
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小凯老师"]').click()
time.sleep(1)
#选择---------------------------select---滑动
select = Select(wd.find_element(By.CSS_SELECTOR,'#ss_single'))
select.select_by_visible_text('小雷老师')
time.sleep(1)
#多选
select2 = Select(wd.find_element(By.CSS_SELECTOR,'#ss_multi'))
#删除所有
select2.deselect_all()
select2.select_by_visible_text('小雷老师')
select2.select_by_visible_text('小凯老师')
time.sleep(1)wd.quit()

看着比较多,但是就是几个重复用。

代码:

1.

elements = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
#print(elements.get_attribute("outerHTML"))
#print('您选的是:'+elements.get_attribute('value'))
‘’

找到你现在目前所选的。

2.radio框

#选择 ---------------------------radio
wd.find_element(By.CSS_SELECTOR,'#s_radio input[value="小雷老师"]').click()
element = wd.find_element(By.CSS_SELECTOR,'#s_radio input[checked=checked]')
time.sleep(1)

找到你要选的,然后点击它,

3.多选

#选择---------------------------checkbox---多选
elements2 = wd.find_elements(By.CSS_SELECTOR,'#s_checkbox input[checked=checked]')
for i in elements2:i.click()
time.sleep(1)
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小雷老师"]').click()
wd.find_element(By.CSS_SELECTOR,'#s_checkbox input[value="小凯老师"]').click()
time.sleep(1)

找到点击了的,然后在点一次,就是全部清除了。

然后选择

4. select滑动

#选择---------------------------select---滑动
select = Select(wd.find_element(By.CSS_SELECTOR,'#ss_single'))
select.select_by_visible_text('小雷老师')
time.sleep(1)

找到对应的,然后用文本搜索:选择

5.

#多选
select2 = Select(wd.find_element(By.CSS_SELECTOR,'#ss_multi'))
#删除所有
select2.deselect_all()
select2.select_by_visible_text('小雷老师')
select2.select_by_visible_text('小凯老师')

多选的,就是全部删除,然后用文本选择


学习与白月黑羽up主,爆赞!!!

相关文章:

爬爬爬——今天是浏览器窗口切换和给所选人打钩(自动化)

学习爬虫路还很长,第一阶段花了好多天了,还在底层,虽然不是我专业要学习的语言,和必备的知识,但是我感觉还挺有意思的。加油,这两天把建模和ai也不学了,唉过年了懒了! 加油坚持就是…...

Netty应用(五) 之 Netty引入 EventLoop

目录 第三章 Netty 1.什么是Netty? 2.为什么需要使用Netty? 3.Netty的发展历程 4.谁在使用Netty? 5.为什么上述这些分布式产品都使用Netty? 6.第一个Netty应用 7.如何理解Netty是NIO的封装 8.logback日志使用的加强 9.Ev…...

【c++基础】国王的魔镜

说明 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把…...

配置DNS正反向解析服务!!!!

一.准备工作 #关闭防火墙和selinux,或者允许服务通过 [rootnode ~]# nmcli c mod ens32 ipv4.method manual ipv4.address 192.168.32.133/24 ipv4.gateway 192.168.32.2 ipv4.dns 192.168.32.132 [rootnode ~]# nmcli c reload [rootnode ~]# nmcli c up ens32[rootnode ~]# …...

大模型2024规模化场景涌现,加速云计算走出第二增长曲线

导读:2024,大模型第一批规模化应用场景已出现。 如果说“百模大战”是2023年国内AI产业的关键词,那么2024年我们将正式迈进“应用为王”的新阶段。 不少业内观点认为,2024年“百模大战”将逐渐收敛甚至洗牌,而大模型在…...

Gitlab和Jenkins集成 实现CI (三)

Gitlab和Jenkins集成 实现CI (一) Gitlab和Jenkins集成 实现CI (二) Gitlab和Jenkins集成 实现CI (三) 自动部署 配置免密ssh 进入http服务器 生成ssh密钥 ssh-keygen -t rsa进入jenkins(容器) 拷贝公钥 ssh-copy-id http服务器用户名http服务器ip #输入http服务器密码配…...

随机过程及应用学习笔记(二)随机过程的基本概念

随机过程论就是研究随时间变化的动态系统中随机现象的统计规律的一门数学学科。 目录 前言 一、随机过程的定义及分类 1、定义 2、分类 二、随机过程的分布及其数字特征 1、分布函数 2、数字特征 均值函数和方差函数 协方差函数和相关函数 3、互协方差函数与互相关函…...

【机器学习】Kmeans如何选择k值

确定 K 值是 K-means 聚类分析的一个重要步骤。不同的 K 值可能会产生不同的聚类结果,因此选择合适的 K 值非常重要。 以下是一些常见的方法来选择 K 值: 手肘法:该方法基于绘制聚类内误差平方和(SSE)与 K 值之间的关系图。随着 K 值的增加,SSE会逐渐降低,但降低幅度逐…...

LeetCode 热题 100 | 链表(下)

目录 1 148. 排序链表 2 23. 合并 K 个升序链表 3 146. LRU 缓存 3.1 解题思路 3.2 详细过程 3.3 完整代码 菜鸟做题第三周,语言是 C 1 148. 排序链表 解题思路: 遍历链表,把每个节点的 val 都存入数组中用 sort 函数对数组进…...

Ubuntu搭建计算集群

计算机硬件和技术的发展使得高性能模拟和计算在生活和工作中的作用逐渐显现出来,无论是计算化学,计算物理和当下的人工智能都离不开高性能计算。笔者工作主要围绕计算化学和物理开展,亦受限于自身知识和技术所限,文中只是浅显地尝…...

数据结构~~树(2024/2/8)

目录 树 1、定义: 2、树的基本术语: 3、树的表示 树 1、定义: 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&…...

【教学类-48-03】202402011“闰年”(每4年一次 2月有29日)世纪年必须整除400才是闰年)

2000-2099年之间的闰年有25次, 背景需求: 已经制作了对称年月的数字提取,和年月日相等的年份提取 【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)-CSDN博客文章浏览阅读84次。【教学类-48-01】202402…...

如何开发一个属于自己的人工智能语言大模型?

要开发一个属于自己的人工智能语言模型,你需要遵循以下步骤: 数据收集:首先你需要大量的文本数据来训练你的模型。这些数据可以来自于各种来源,例如书籍、网站、新闻文章等。你需要确保这些数据足够多样化,以便模型能学…...

【HTTP】localhost和127.0.0.1的区别是什么?

目录 localhost是什么呢? 从域名到程序 localhost和127.0.0.1的区别是什么? 域名的等级划分 多网站共用一个IP和端口 私有IP地址 IPv6 今天在网上逛的时候看到一个问题,没想到大家讨论的很热烈,就是标题中这个: …...

Edge浏览器-常用快捷键

按键组合作用Ctrl Shift I开发人员工具Ctrl E定位到 空地址栏Ctrl L定位到 地址栏Ctrl Shift B显示或隐藏 收藏夹栏Ctrl Shift O打开收藏夹(搜索)Ctrl T打开一个新标签页Ctrl W关闭当前标签页Ctrl Shift T重新打开刚才关闭的标签页Ctrl Tab切换到下一个标签页Ctrl…...

C++:Vector动态数组的copy深入理解

动态数组分配的大小默认为2的n次方1,2,4,8... 在main中创建的vertices,push需要放到Vertex中(copy),下一次copy是因为要调整vertices的大小 vertices.push_back(Vertex(1,2,3));//拷贝 第一次&a…...

【PyTorch】PyTorch中张量(Tensor)切片操作

PyTorch深度学习总结 第三章 PyTorch中张量(Tensor)切片操作 文章目录 PyTorch深度学习总结一、前言二、获取张量中的元素1、切片(行、列数)方法2、torch.where()函数3、使元素置零的操作 一、前言 上文介绍了PyTorch中改变张量(Tensor)形状的操作&…...

GeoServer 2.11.1升级解决Eclipse Jetty 的一系列安全漏洞问题

Eclipse Jetty 资源管理错误漏洞(CVE-2021-28165) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7656) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7657) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7658) Jetty 信息泄露漏洞(CVE-2017-9735) Eclipse Jetty 安全漏洞(CVE-2022-20…...

【蓝桥杯选拔赛真题34】C++最大值 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++最大值 一、题目要求 1、编程实现 2、输入输出...

STM32之USART

概述 串口通信,通用异步收发传输器(Universal Asynchronous Receiver/Transmitter ),简称UART;而USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步收发传输器。 USAR…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...