web自动化之基础内容三(全网最详细,控制浏览器大小,控制浏览器前进后退刷新操作,webdriver的常用方法以及css高级语法)-第三天

1.控制浏览器大小

代码示例:

from selenium import webdriver
import time

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")

# webdriver 提供了 set_window_size 方法来控制浏览器大小
# 参数的单位是像素点
driver.set_window_size(700, 700)

# 在pc端执行用例的时候,大多数情况下,我们浏览器全屏
driver.maximize_window()
time.sleep(3) #方便观察,再浏览器最大化后,等待个3秒,让浏览器最小化
# 上边是最大化,与之对应的还有最小化
driver.minimize_window()

2.控制浏览器前进后退刷新

代码示例

# 访问网址
driver.get("http://www.baidu.com")
driver.get("http://m.weibo.cn") 

#这两行代码没有打开两个浏览器,get没有打开浏览器的功能,他只能控制浏览器访问网址
#先访问了百度,后访问了微博

from selenium import webdriver
import time
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")
driver.get("http://m.weibo.cn") 
# 返回(后退),就会退到百度
driver.back()
time.sleep(3) #方便观察效果

# 前进,就会到微博
driver.forward()
time.sleep(3) #方便观察效果

# 刷新界面
driver.refresh()

3.webdriver的常用方法

(1)点击、输入
我们定位元素对象之后要去操作元素,比如点击(按钮、链接)、输入
click 方法提供元素点击操作、点击元素
send_keys 方法提供文本输入,模拟按键输入(要求被操作元素是文本框
clear 提供文本框内容清空的功能

代码示例

from selenium import webdriver
import time

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")  # 输入内容
time.sleep(3) #方便观察效果
driver.find_element_by_id("kw").clear()  # 清空文本框内容
time.sleep(3) #方便观察效果
driver.find_element_by_id("kw").send_keys("python")  # 重新输入内容
driver.find_element_by_id("su").click()  # 点击元素

(2)其他方法
size 获取元素尺寸
text 获取元素标签对之间的内容
get_attribute 获取元素属性值
is_displayed 检查元素是否可见

from selenium import webdriver
import time
# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("http://www.baidu.com")
"""
driver.find_element_by_id("kw").send_keys("selenium")  # 输入内容
time.sleep(3) #方便观察效果
driver.find_element_by_id("kw").clear()  # 清空文本框内容
time.sleep(3) #方便观察效果
driver.find_element_by_id("kw").send_keys("python")  # 重新输入内容
driver.find_element_by_id("su").click()  # 点击元素
"""
ele = driver.find_element_by_id("kw")
print(ele.size)  # 打印元素的尺寸
print(ele.text)  # 打印元素文本
print(ele.get_attribute("class"))  # 打印元素的class属性
print(ele.is_displayed())  # 检查元素是否可见

运行结果:

4.css高级语法

(1)推荐的元素定位优先级
    优先级最高:ID
    优先级其次:name
    优先级再次:CSS Selector
    优先级最次:Xpath
    link_text、class_name、tag_name 基本不用

(2)为什么优先选择css,而不选xpath?
1、css是配合HTML工作的,css的实现原理是匹配对象; xpath是配合xml工作的,xpath的实现原理是遍历
2、大部分人认为css的语法更加简洁明了
3、前端开发主要用的是css,不使用xpath

css的语法是怎样的呢?
css的规则由两部分构成:选择器,以及一条或多条声明

选择器有id选择器,class选择器,标签选择器等等;

(3)CSS 选择器有几种?有什么区别?

CSS选择器用于选择HTML或XML文档中的元素,以便对其应用样式。CSS选择器有多种类型,常见的包括以下几种:

元素选择器(Element Selector):通过指定元素名称来选择匹配的元素。例如,p选择器选择所有的<p>元素。

类选择器(Class Selector):通过指定类名来选择匹配的元素。类选择器以.开头,后面跟着类名。例如,.highlight选择所有具有highlight类的元素。

ID选择器(ID Selector):通过指定唯一的ID来选择匹配的元素。ID选择器以#开头,后面跟着ID名称。例如,#logo选择具有logo ID的元素。

属性选择器(Attribute Selector):通过匹配元素的属性来选择元素。属性选择器可以根据属性的存在、值或其他条件进行选择。例如,[type="submit"]选择所有type属性值为submit的元素。

后代选择器(Descendant Selector):通过指定元素的后代关系来选择元素。后代选择器使用空格分隔不同层级的元素。例如,div p选择所有位于<div>元素内部的<p>元素。

子元素选择器(Child Selector):通过指定元素的直接子元素关系来选择元素。子元素选择器使用>符号分隔父元素和子元素。例如,ul > li选择所有作为<ul>直接子元素的<li>元素。

相邻兄弟选择器(Adjacent Sibling Selector):通过指定元素与其相邻的兄弟元素关系来选择元素。相邻兄弟选择器使用+符号分隔两个相邻的元素。例如,h2 + p选择紧跟在<h2>元素后面的<p>元素。

这些是CSS选择器的常见类型,每种选择器都有其特定的匹配规则和应用场景。在实际使用中,可以根据需要灵活组合不同类型的选择器,以选择目标元素并应用样式。

代码示例

id,class,标签(元素),分组,属性选择器

自己写的test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*id 选择器,选中具有特定id的HTML元素*/
        /*css 中的id选择器以 # 来定义*/
        #abc {
            color: #0044bb
        }

        /*class 选择器,选中具有特定class属性的HTML元素*/
        /*在css当中,class选择器以 . 来定义*/
        .ab1 {
            color: #cc0000
        }

        /*标签选择器,选中特定类型的HTML元素*/
        /*标签选择器,直接就是标签的名称*/
        p {
            font-size: 20px
        }

        /*分组选择器,可以选中一组HTML元素*/
        /*在css当中,分组选择器以 , 来定义*/
        /*下面的代码的意思就是所有的a标签和所有的span标签背景颜色改变*/
        a, span {
            background: #51a7e8
        }

        /*属性选择器,选取具有特定属性的html元素*/
        /*在css当中,属性选择器以 [] 来定义*/
        /*选择所有class属性为li的标签*/
        [class="li"] {
            color: #cc0000
        }

        /*我们也可以不为属性指定值*/
        /*下面代码的意思:选中所有具有title属性的标签*/
        [title] {
            background: #4d4d4d
        }

        /*我们也可以指定标签*/
        a[title] {
            font-size: 30px
        }

        /*属性选择器还支持匹配单词边界*/
        /* ~是匹配单词边界的*/
        a[title~="python"] {
            background: #cc0000
        }
    </style>
</head>
<body>
<p id="abc">独怜幽草涧边生</p>
<p class="ab1">东边日出西边雨</p>
<a>春蚕到死丝方尽</a>
<br>
<span>相见时难别亦难</span>
<br>
<ul>
    <li class="li">十年生死两茫茫</li>
    <li class="li">不思量</li>
    <li class="li">自难忘</li>
</ul>
<p title="a1">春心莫共花争发</p>
<p title="a2">一寸相思一寸灰</p>
<a title>日日思君不见君,共饮长江水</a>
<br>
<a title="hello python world">只愿君心似我心,定不负相思意</a>
<br>
</body>
</html>

py模块

from selenium import webdriver

# 创建浏览器驱动对象,这里是打开浏览器
driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")
# 访问网址
driver.get("file:///D:/sonQin/pythonProjectSelenimu/day03/test.html")

ele = driver.find_element_by_css_selector("#abc")
print(ele.text)  #独怜幽草涧边生

(4)组合选择符

组合选择符,在css当中有一下四种组合方式
后代选择器(以空格分隔)
子元素选择器(以大于号分隔)
相邻兄弟选择器(以加号分隔):可选择紧挨另一元素一个元素,且二者拥有相同的父元素
思考:如果使用相邻兄弟选择器,定位的是老二,那么他找的是老大还是老三呢?
例如:

这样写,test1.html的运行结果为(紧挨另一元素一个元素):
test1.html后面的代码示例有,或者也可以在资源中自行下载,如有疑问,可在评论区留言
后续兄弟选择器(以小波浪线分隔):选取指定元素之后的所有弟弟

代码示例:

自己新建一个test1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*组合选择符,在css当中有一下四种组合方式*/
        /*    后代选择器(以空格分隔*/
        /*    子元素选择器(以大于号分隔*/
        /*    相邻兄弟选择器(以加号分隔*/
        /*    后续兄弟选择器(以小波浪线分隔*/

        /*后代选择器,用于选取某元素的后代元素,无论层级有多深*/
        /*选取id为ab1的元素,后代中的所有p标签*/
        #ab1 p {color: #cc0000}

        /*子元素选择器,与后代选择器相比,子元素选择器只能选中直接子元素*/
        #ab1 > p {background: #51a7e8}

        /*相邻兄弟选择器,可选择紧挨在另一元素后的一个元素,且二者拥有相同的父元素*/
        #xyz + .hello {color: yellow}
        #xyz + li {background: black}
        #xyzzz + li {font-size: 50px}

        /*后续兄弟选择器,选取指定元素之后的所有弟弟*/
        #xyzz ~ li {color: blue}
    </style>
</head>
<body>
<ul id="abc1">
    <li id="xyz">欲洁何曾洁</li>
    <li class="hello">云空未必空</li>
    <li class="hello">可怜金玉质</li>
    <li>终陷淖泥中</li>
</ul>
<ul id="abc2">
    <li id="xyzz">老夫聊发少年狂</li>
    <li>左牵黄</li>
    <li>右擎苍</li>
    <li>锦帽貂裘千骑卷平岗</li>
</ul>
<ul>
    <li>老夫聊发少年狂</li>
    <li id="xyzzz">左牵黄</li>
    <li>右擎苍</li>
    <li>锦帽貂裘千骑卷平岗</li>
</ul>
<div id="ab1">
    <ul>
        <li>玉带林中挂</li>
        <li>金钗雪里埋</li>
    </ul>
    <div>
        <p>一从二令三人木</p>
        <div>
            <p>可叹停机德</p>
            <p>堪怜咏絮才</p>
        </div>
    </div>
    <p>子系中山狼,得志便猖狂</p>
</div>
</body>
</html>

5.练习

操作这个网址  华为商城VMALL

要求输出该网址的一级标签

参考代码:资源绑定里自行获取,如有疑问,可在评论区留言 

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布凡哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值