selenium(2)----自动化测试(python)
创始人
2025-05-29 01:52:51
0

操作界面上的元素:

先选中元素再进行调用下面的方法

1)click(),点击对象

2)send_keys(),在对象上模拟进行输入

3)submit,提交对象的内容,和提交表单操作差不多,必须操作界面的元素是

4)clear,清除对象上面的内容

5)text,获取元素文本

模拟场景:打开浏览器,在地址栏里面输入百度的网址之后,并在搜索输入框里面输入第一次要搜索的文字,然后清空输入框,再次输入文字进行搜索

from selenium import webdriver
import time
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
url="http://www.baidu.com";
driver.get(url);
#1.选中元素进行第一次点击输入
driver.find_element_by_css_selector("#kw").send_keys("小姐姐");
time.sleep(2);
driver.find_element_by_css_selector("#su").click();
time.sleep(2);
#2.选中输入框进行清空,选择第二次输入,按钮点击
driver.find_element_by_css_selector("#kw").clear();
time.sleep(2);
driver.find_element_by_css_selector("#kw").send_keys("微胖女孩");
time.sleep(2);
driver.find_element_by_css_selector("#su").click();
from selenium import webdriver
import time
# 获得浏览器的驱动
driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 在浏览器搜索框里面输入要进行访问的web界面
driver.get("http://www.baidu.com")
time.sleep(3)
driver.find_element_by_css_selector("#kw").send_keys("中国")
time.sleep(3)
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.find_element_by_id("kw").clear()
time.sleep(3)
driver.find_element_by_id("kw").send_keys("我爱你")
time.sleep(3)
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.quit()

1)我们是想要获取百度页面最下面的这一部分广告内容

前提是对应的这部分的div的内容是全局唯一的,使用text属性就成功地获取到了内容,text用于获取元素的文本信息,先通过className来获取到元素

from selenium import webdriver
import time
# 获得浏览器的驱动
driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 在浏览器搜索框里面输入要进行访问的web界面
driver.get("http://www.baidu.com")
time.sleep(3)
text = driver.find_element_by_class_name("s-bottom-layer-content").text
print(text)
time.sleep(3)
driver.quit()

2)使用text属性来获取到百度页面左上角的链接文字

咱们现在演示一下这个操作:

现在的目标是想要打印div里面的内容,通过print函数直接打印

from selenium import webdriver
import time
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
url="http://www.baidu.com";
driver.get(url);
text=driver.find_element_by_id("s-top-left").text;
print(text);
driver.quit();
打印结果:新闻hao123地图贴吧视频图片网盘更多

3)使用text属性来进行定位到左上角的hao123

本质上还是想要通过xpath来定位页面上的hao123,然后再通过text属性来获取到文本内容

rom selenium import webdriver
import time
# 获得浏览器的驱动
driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
# 在浏览器搜索框里面输入要进行访问的web界面
driver.get("http://www.baidu.com")
time.sleep(3)
text = driver.find_element_by_xpath("//*[@id='s-top-left']/a[2]").text
print(text)
time.sleep(3)
driver.quit()

 4)定位百度的热搜词

添加等待:

title=driver.title,获取当前页面的标题
url=driver.current_url,获取当前页面的url

time.sleep()是固定等待时间

driver.implicity_wait()是智能等待

1) time.wait()是固定时间等待,无论页面是否被加载出来,都等待这么长时间,时间到了才会进行下面的操作;

2)但是咱们的智能等待就不一样了,只要页面加载出来,即使页面加载的时候时间到了,咱们就可以进行接下来的操作了,如果页面迟迟加载不出来,那么就会抛出异常;

from selenium import webdriver
import time
#coding utf-8
driver=webdriver.Edge("C:\Program Files\Python310\Scripts\msedgedriver.exe");
url="http://www.baidu.com";
driver.get(url);
driver.find_element_by_css_selector("#kw").send_keys("肖战")
driver.find_element_by_css_selector("#su").click();
#driver.implicitly_wait(10);
driver.find_element_by_link_text("肖战 - 百家号").click();
#time.sleep(2);
title=driver.title//获取当前页面的标题
url=driver.current_url;//获取当前页面的url
print(title);
print(url);
driver.quit();
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"肖战 - 百家号"}
(Session info: MicrosoftEdge=105.0.1343.53)

1)上面的程序会出现下面的异常,因为我们在浏览器点击肖战之后,咱们的搜索框进行搜索,但是搜索的过程中,程序是会进行加载的,但是咱们的脚本时会正常的进行立即执行的,而咱们的页面有加载不出来,所以就会找不到对应的元素
2)所以当我们在浏览器中点击肖战的时候,咱们就要进行设置一个延时时间,让咱们的程序等待一会在执行,但是咱们用time.sleep()又不算特别好因为你要等多长时间不确定(页面加载完成时间不可控,设置时间长,要是页面加载的时间特别长,等待时间设置的长也合理,但是在等待时间之前页面就加载完成了,这样程序还要进行等待,效率很低
3)所以我们通过driver.implicitly_wait(10)的方式来进行加载,页面好了就进行加载,如果页面过了指定时间还没有加载完成,那么直接抛出异常 

浏览器页面的最大化:

1)driver.maximize_window()

设置浏览器的宽高:

2)driver.set_window_size(480,480),前面是宽后面是高这个程序可以很好地反映这个浏览器页面的变化

from selenium import webdriver
import time
#coding utf-8
driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
driver.get("http://www.baidu.com")
driver.maximize_window()
time.sleep(4)
driver.set_window_size(460,460)
time.sleep(3)
driver.quit()

浏览器的前进和后退:

driver.back()浏览器回退到到上一个页面

driver.forward()浏览器前进一个页面

代码演示:浏览器的前进和后退:

代码运行现象:浏览器打开搜狗界面之后大约2s回退到原来界面,等待2s侯又回到搜狗界面

from selenium import webdriver
import time
driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
driver.get("https://sougou.com/")
time.sleep(2)
driver.back()
time.sleep(2)
driver.forward()
time.sleep(3)
driver.quit()

对浏览器控制条滚动的控制:

浏览器的控制条的下拉:(基于JS来进行操作),这个是从最上边的界面拉到最下边的界面
js1="var q=document.documentElement.scrollTop=10000";
执行js:driver.execute_script(js1)
下面这一个是从最下边的界面拉到最上边的界面:
js2="var q=document.documentElement.scrollTop=0";
执行js:driver.execute_script(js1)
scrollTop的意思是距离浏览器的顶端多远

代码演示:打开浏览器,先进行打开搜狗界面,先把滚动条拉到最下面,再把滚动条拉到最上面

from selenium import webdriver
import time
webdriver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
webdriver.get("http://www.sougou.com")
time.sleep(3)
js1="var q=document.documentElement.scrollTop=10000";
webdriver.execute_script(js1)
time.sleep(3)
js2="var q=document.documentElement.scrollTop=0";
time.sleep(3)
webdriver.execute_script(js2)
time.sleep(3)
webdriver.quit()

driver.set_window_size(w,h)  设置浏览器大小 单位像素

driver.set_window_position(x,y) 设置浏览器位置

driver.refresh()刷新当前页面

写一个代码来演示下面三种操作:

from selenium import webdriver
import time
driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
time.sleep(3)
url="http://www.baidu.com"
driver.get(url)
time.sleep(2)
driver.set_window_position(40,80)
driver.get("http://www.sougou.com")
time.sleep(2)
driver.refresh();
time.sleep(2);
driver.close();

 注意:

相关内容

热门资讯

FIBA期待杨瀚森表现 最新实... 北京时间6月25日消息,FIBA国际篮联公布了最新一期世界杯预选赛亚太区球队实力榜,中国男篮排在澳大...
收评:创业板指放量反弹涨2.8... 市场冲高回落后,再度震荡拉升。黄白线分化明显,权重股走势较强。量能明显放大,沪深两市成交额3.59万...
巨头财报引爆A股存储芯片板块,... 当地时间6月24日美股盘后, 美光科技(MU.US)公布截至5月31日的2026财年第三财季财报,业...
银行、消金公司助贷余额增速不得... 近日,中国证券报记者从多位业内人士处独家获悉,5月以来,多地金融监管部门对部分中小银行、消金公司下达...
朱鸿接任陈航,担任钉钉科技有限... 消费日报-今朝新闻讯 天眼查显示,6月23日,钉钉科技有限公司发生工商变更,陈航卸任法定代表人、董事...
3日累跌超20%,德创环保:公... 6月25日, 德创环保(603177.SH)公告,公司股票于2026年6月23日、6月24日和6月2...
北京发布2026年第七轮拟供商... 央广网北京6月25日消息(记者门庭婷)6月25日,北京市规划和自然资源委员会网站发布了2026年第七...
开放麦 | 启明创投胡奇:从A... “2026年,创投圈的浪潮再次翻涌:AI从技术概念走进产业深水区,硬科技创业从“小众赛道” 变成“主...
腾讯孙忠怀:在行业转身处 6月24日,2026腾讯视频年度发布在上海举行。腾讯公司副总裁、腾讯在线视频董事长孙忠怀以《在行业转...
加息,突变!美联储,重磅传来!... 美联储政策路径突生变数。 美国商务部经济分析局最新公布的数据显示,5月个人消费支出(PCE)物价指数...
6月合肥上门收金必看!5步避坑... 2026年6月,合肥黄金市场持续高位运行,不少市民翻出家里闲置的旧金饰、投资金条想变现,上门回收因为...
潮汕女富豪挂帅后加码液冷!祥鑫... 潮汕女强人,带着百亿公司加码液冷散热。 6月24日晚间,祥鑫科技(002965.SZ)公告称,公司董...
马斯克向太空要电,GobiX ... 一场关于「去哪里找电」的全球竞赛,正在朝两个方向展开。 作者|周永亮 编辑| 郑玄 「太空光伏是不是...
原料药行业陷入周期低谷 有药企... 每经记者|许立波 每经编辑|魏文艺 “过完年到现在,我们整个团队每个月都在出差,跑遍了亚非拉、欧美市...
家门口筛查白内障!永顺泽家镇暖... 大众卫生报·新湖南客户端6月25日讯(通讯员 彭雪姣)为切实解决辖区老年性白内障患者异地就医奔波、就...
终于等到!油价马上再大跌,这个... 点击添加图片描述(最多60个字) 编辑 各位车主朋友,好消息接二连三! 继6月18日油价大幅下调...
丈量出海新路 世界酒庄影响力指... 长期以来,全球酒庄评价体系由西方机构主导,且大多局限于单一酒种、单一评价维度,这一局面正逐渐被打破。...
峰瑞资本创始合伙人李丰:从资本... “2026年,创投圈的浪潮再次翻涌:AI从技术概念走进产业深水区,硬科技创业从“小众赛道” 变成“主...
原创 A... 迈向成熟,还有茁壮成长的机会。 作者 | 方璐 编辑丨于婞 来源 | 野马财经 2026年6月21日...
为企业解锁出海新通道!亚太中小... 6月24日下午,作为2026年APEC中小企业工商论坛的重要组成部分,亚太中小企业国际化合作发展论坛...