文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python——按键操作、时间等待、点击

2023-01-31 07:35

关注

一、按键操作

       selenium提供了比较完整的按键操作,在使用按键操作之前引入包from selenium.webdriver.commen.keys import Keys,然后就可以模拟按键操作。以进入百度网页为例,进行具体的按键操作。


from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
time.sleep(3)
# 找到输入框并输入指定内容
driver.find_element_by_id('kw').send_keys('selenium')
# ctr + a 全选输入框内的全部内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')
time.sleep(3)
# ctr + x 剪切输入框内的内容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')
time.sleep(2)
# 搜索爬虫技巧
driver.find_element_by_id('kw').send_keys(u'爬虫技巧')
time.sleep(2)
# 点击搜索按钮
driver.find_element_by_id('su').click()
time.sleep(6)
# 退出浏览器
driver.quit()

二、时间等待

       selenium由网页驱动驱使浏览器进行操作,速度慢是一大特点,经常会出现代码执行完了,但是网页还没有加载完毕;如果这个时候操作里面的标签报出异常NoSuchElementException,解决的办法是时间休眠time.sleep()。

       引入一个网页等待的包from selenium.webdriver.support.ui import WebDriverWait


from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 在搜索框内输入helloworld
# driver.find_element_by_id('kw').send_keys('hello wolrd')
button = driver.find_element_by_id('su')
# WebDriverWait 网页等待 值1:等待的对象  值2:等待的时间
# WebDriverWait 经常和until not 一起使用 until直到
# lambda 匿名函数  is_displayed是否已经显示
is_visible = WebDriverWait(driver,10).until(lambda driver : button.is_displayed())
print(is_visible)
button.click()

     WebDriverWait()和time.sleep()的区别:(1)都是让程序等待指定执行的时间(2)time的时间是固定的,时间长短不会随着标签的加载速度而改变;WebDriverWait时间是固定的,等待多少时间要看标签的加载时间和指定的固定时间(3)如果在指定时间内,标签仍然没有加载出来,那么time和WebDriverWait都会报出异常。

三、点击事件

     首先引入包from selenium.webdriver.common.action_chains import ActionChains

     以点击百度logo为例:


from selenium import webdriver
# action行动 chains链
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
import time
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 找到百度logo的三种方法
# logo = driver.find_element_by_class_name('index-logo-src')

logo = driver.find_element_by_xpath('//div[@id="lg"]/img')

# logo = driver.find_element_by_css_selector('#Id > img')

# 等待直到标签出现
WebDriverWait(driver,10).until(lambda driver : logo.is_displayed())
# 单击事件
# ActionChains(driver).click(logo).perform()
# 双击事件
ActionChains(driver).double_click(logo).perform()
# context 上下文  context_click 
# 右击事件
action = ActionChains(driver).context_click(logo)

# 操作时间会跑到perform队列里面 perform实现
action.perform()
#time.sleep(5)

# 鼠标移动
more = driver.find_element_by_class_name('bri')
WebDriverWait(driver,10).until(lambda driver : more.is_displayed())
ActionChains(driver).move_to_element(more).perform()

四、标签选择

       引入一个包from selenium.webdriver.common.by import By

       建一个html文件


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="red" class="red" οnclick="fun1()">按钮1</button>
    <button type="button" name="username" οnclick="fun2()">按钮2</button>
    <button type="button" οnclick="fun3()">按钮3</button>
    <button id="pink" οnclick="fun4()">按钮4</button>
    <script>
        function fun1() {
            document.body.style.backgroundColor = 'red'
        }
        function fun2() {
            document.body.style.backgroundColor = 'green'
        }
        function fun3() {
            document.body.style.backgroundColor = 'blue'
        }
        function fun4() {
            document.body.style.backgroundColor = 'pink'
        }
    </script>
</body>
</html>

       通过这些标签进行相关操作


from selenium import webdriver
from selenium.webdriver.common.by import By
import os
import time
driver = webdriver.Firefox()
driver.get('file:///' + os.path.abspath('4.index.html'))
# 通过标签名字来找到指定的标签
btns = driver.find_elements_by_tag_name('button')
print(btns)

       找到任意标签的四种方式


# 1.通过索引来找到指定的标签
btns[1].click()
for btn in btns :
    #2.通过属性来找到指定的标签
    # 根据按钮属性点击 首先是一个button,然后name属性是username
    if btn.get_attribute('name') == 'username':
        btn.click()
    time.sleep(3)
    btn.click()

# 找到的是第一个按钮
driver.find_element_by_tag_name('button').click()
# find_element_by_XX通过XX来找到所有标签当中的第一个标签
# find_elements_by_XX通过XX来找到所有符合的标签

# 3.弹出指定元素 如果不写索引 默认为最后一个
driver.find_elements_by_css_selector('button').pop(2).click()

# [type=button] []里面为限制条件 限制选择的内容
driver.find_elements_by_css_selector('button[type="button"]').pop().click()
# 4.通过...来找到指定的标签 by=By.XX
driver.find_element(by=By.ID,value='pink').click()

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯