Selenium元素操作

38 篇文章 6 订阅
23 篇文章 0 订阅


# 常规元素操作行为:Selenium本身就是用于模拟人的操作行为,遇到不知道怎么处理的,参考人类的使用习惯
from time import sleep

from selenium import webdriver


# chrome
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome(options = options)
# sleep(5)

1.窗体最大化

# 不要用,在selenium2开始就存在一个bug,调用窗体最大化时会造成driver的超时异常
# driver.maximize_window()

2.设置窗体大小尺寸

# driver.set_window_size(800,1000)

3.访问url以及文件

# driver.get('http://39.98.138.157/shopxo/index.php')
# driver.get(r'file:///D:/hhh.html')
driver.get('https://www.baidu.com/')

4.窗体最小化 不实用 不如不用

# driver.minimize_window()

5.浏览器操作,前进后退以及刷新

# driver.forward()
# driver.back()
# driver.refresh()

6.获取title:

# 用于在调试的时候可以判断一下,仅此而已,不代表可以用于断言

print(driver.title)

7.元素定位

# driver.find_element() # 定位单个元素,如果同时有多个元素满足条件,定位第一个发现的元素并返回
# driver.find_elements() # 定位符合条件的所有元素,最终以list的格式返回.如果要操作其中的元素,需要通过下标

8.获取到元素之后的操作行为

1.输入操作

# test = driver.find_element('name','wd').send_keys('虚竹')
# print(test)

2.文件上传

# 如果在系统操作中遇到文件上传的操作,如果是input标签则可以通过sendkeys直接操作,非input标签,弄死开发,或者用autoIT去解决
# driver.find_element('xpath','//span[@class="soutu-btn"]').click()
# driver.find_element('xpath','//input[@value="上传图片"]').send_keys(r'E:\美图小殿\2020\2020.8\司小幽.jpg')

3.点击

# 如果有点击的需求,统一通过click()来实现
# driver.find_element().click()

4.操作下拉列表框

1.悬停在设置元素上

# 悬停操作时,鼠标不要在driver的浏览器中移动
ActionChains(driver).move_to_element(driver.find_element('xpath','//span[text()="设置"]')).perform()

2.点击高级搜索

driver.find_element('link text','高级搜索').click()

'''
    下拉列表框分为以下三种:
        1.基于input标签实现的下拉列表框
        2.基于Select标签实现的
        3.基于其他标签实现的
'''

3.常见的下拉列表框操作一

sleep(1)
driver.find_element('xpath','//span[text()="全部时间"]').click()
driver.find_element('xpath','//p[text()="最近一月"]').click()

4.常见的下拉列表框操作二:input标签

# 一般input下拉列表框是具有只读属性,无法直接通过send_keys输入,输入前需要remove只读属性,此方法如果无效,使用两次click方法解决
# driver.find_element('xpath','//input[text()="全部时间"]').send_keys("最近一月")

5.Select标签下拉列表框

# 如果你的系统有这个东西,也就意味着他比你的工作年限还要长的多
# select = Select(driver.find_element('id','cityId'))
# # 选择值
# # 通过下标选择
# select.select_by_index(5)
# # 通过value选择
# select.select_by_value(12)
# # 通过文本选择
# select.select_by_visible_text('成都')

5.退出浏览器

# driver.close()
driver.quit()
'''
    新页面的访问:selenium访问新页面的时候,默认停留在老页面中,每个页面都有一个句柄,要操作哪个页面就切换到哪个句柄
    句柄的切换业务下,需要时刻记住,标签页最多保留不超过2个,一般在访问新标签页之前,要close掉旧的标签页
    内嵌窗体的元素操作:有一种场景下,你元素定位是正确的,并且再三确认过的,但是运行到这里就是找不到元素,也等待了,也排查了,也让虚竹看了。这时候
    需要思考下,是不是有iframe呢?
'''

9.句柄

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
sleep(2)
driver.maximize_window()
# driver.get("http://www.baidu.com")
# driver.find_element('id','kw').send_keys('虚竹')
# driver.find_element('id','su').click()
# driver.close()
#访问新页面前
# print(driver.window_handles)
# driver.find_element('xpath','//*[@id="1"]/div/div/h3/a').click()
# sleep(3)
# print(driver.title)

1.句柄获取

# handles = driver.window_handles
# 访问新页面后
# print(handles)

2.关闭当前标签页

# driver.close()

3.句柄切换

# driver.switch_to.window(handles[1])
# print(driver.title)

10.iframe处理

driver.get('https://music.163.com/')
driver.find_element('link text','登录').click()
driver.find_element('link text','选择其他登录模式').click()
driver.find_element('id','j-official-terms').click()
driver.find_element('partial link text','QQ登录').click()
sleep(1)

1.句柄获取

handles = driver.window_handles
# 访问新页面后
# print(handles)

2.关闭当前标签页

# driver.close()

3.句柄切换

driver.switch_to.window(handles[1])
# print(driver.title)

4.iframe

#如果元素在iframe标签中,需要先切换至iframe,再进行定位
driver.switch_to.frame('ptlogin_iframe')
driver.find_element('xpath','//*[@id="qlogin_list"]/a').click()
# 切换到默认窗体:只有切换回来以后才可以继续操作页面中iframe以外的内容
driver.switch_to.default_content()
'''
    Selenium4中新增的有用的操作行为:针对于浏览器与标签页的
'''

11.Selenium4实用方法

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()
sleep(3)
# 自动生成新的标签页,并切换过去
# driver.switch_to.new_window('tab')
driver.switch_to.new_window('window')
print(driver.window_handles)
driver.get('http://www.baidu.com')
driver.switch_to.window(driver.window_handles[0])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

司小幽

真诚赞赏,手留余香。

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

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

打赏作者

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

抵扣说明:

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

余额充值