selenium---3

本文详细介绍了使用Selenium进行网页元素操作,包括查找一组元素、处理多层框架、层级选择、下拉框交互、警告对话框以及文件上传等常见任务。通过实例展示了如何定位并操作各种页面元素,如点击链接、输入关键字、选择下拉选项以及处理弹窗等。
摘要由CSDN通过智能技术生成

1.一组元素

  • webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有的时候我们却需要定位一组对象,这个时候就需要使用find_elements方法。
  • 定位一组对象一般使用以下场景:
  • 批量操作对象;
  • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。
  • get_attribute:获取属性值
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/3.html")
driver.get(file)
# driver.find_element_by_id("c2").click
inputs = driver.find_element_by_tag_name("input")
for input in inputs:
    if input.get_attribute('type') == 'checkbox':
        input.click()

time.sleep(6)
driver.quit()

2.多层框架

  • 多层框架或窗口的定位:
  • switch_to.frame()
  • switch_to_window()
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/2.html")
driver.get(file)
driver.maximize_window()
driver.switch_to.frame("f1")
driver.switch_to.frame("f2")
driver.find_element_by_id("kw").send_keys("龚俊")
driver.find_element_by_id("su").submit()
time.sleep(6)
# 调转到默认页面
driver.switch_to.default_content()
driver.switch_to.frame("f1")
driver.find_element_by_link_text("click").click()
time.sleep(6)
driver.quit()

3.层级

  • 定位思路:先点击显示出1个下拉菜单,然后再定位到该下拉菜单所在的url,再定位到这个url的具体的link.
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/1.html")
driver.get(file)
driver.maximize_window()

driver.find_element_by_link_text("Link1").click()
time.sleep(6)
mm = driver.find_element_by_link_text("Another action")
ActionChains(driver).move_to_element(mm).perform()
time.sleep(6)
driver.quit()

4. 下拉框处理

  • 下拉框是我们最常见的一种页面元素,对于一般的元素,我们只需要一次就定位,但下拉框里面的内容需要进行两次定位,先定位到下拉框,在定位到下拉框的选项:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/2..html")
driver.get(file)
driver.maximize_window()
time.sleep(6)

# xpath定位
# driver.find_element_by_xpath("//*[@id='ShippingMethod']/option[4]").click()
options = driver.find_elements_by_tag_name("option")
# for option in options:
#     if option.get_attribute('value')=='9.03':
#         option.click()
# 用数组的方式定位,要注意下标
options[3].click()
time.sleep(6)
driver.quit()

5. alert、confirm、prompt的处理

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/alert.html")
driver.get(file)
driver.maximize_window()
time.sleep(6)

driver.find_element_by_id("tooltip").click()

time.sleep(5)
# 获得操作
alert = driver.switch_to.alert
# 关掉弹框
alert.accept()


# alert的另一种用法
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/send.html")
driver.get(file)
driver.maximize_window()
time.sleep(6)

driver.find_element_by_tag_name("input").click()
time.sleep(3)

alert = driver.switch_to.alert

alert.send_keys("龚俊!")
alert.accept()

time.sleep(6)
driver.quit()
  • DIV对话的处理
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/modal.html")
driver.get(file)
driver.maximize_window()
time.sleep(3)

driver.find_element_by_id("show_modal").click()
time.sleep(3)

driver.find_element_by_id("click").click()
time.sleep(6)

div = driver.find_element_by_class_name("modal-footer")
buttons = div.find_elements_by_tag_name("button")
buttons[0].click()

time.sleep(6)
driver.quit()

6.上传文价操作

  • 上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
file = "file:///"+os.path.abspath("D:/jade/upload.html")
driver.get(file)
driver.maximize_window()
time.sleep(3)

driver.find_element_by_tag_name("input").send_keys("C:/Users/jade/Pictures/Screenshots")
time.sleep(6)
driver.quit()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值