首页 > 其他分享 >Selenium基础:特殊Dom结构操作 07

Selenium基础:特殊Dom结构操作 07

时间:2023-06-26 16:35:38浏览次数:37  
标签:webdriver 07 Dom Selenium frame driver alert time import

特殊Dom结构是指对元素不能直接操作,需要进行特殊定位切换到它所在的Dom结构,然后才能对其元素进行操作

1、windows弹窗 --alert confirm prompt

使用driver.switch_to.alert方法

alert类操作方法:

  • accept():确定
  • dismiss():取消
  • text():获取弹出框内的内容
  • send_keys(keysToSend):输入字符串
# -*-coding:utf-8-*-

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = webdriver.Chrome()
driver.get("")
driver.implicitly_wait(2)

driver.find_element_by_id('window').find_element_by_tag_name('input').click()
time.sleep(1)
#等待弹窗出现
WebDriverWait(driver,20).until(EC.alert_is_present())

#切换进alert弹窗
alert = driver.switch_to.alert
print(alert.text)
alert.accept()

time.sleep(3)
driver.quit()

2、非windows弹窗

# -*-coding:utf-8-*-

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("")
driver.implicitly_wait(10)

driver.find_element_by_id('noWindow').find_element_by_tag_name('input').click()
time.sleep(1)
#关闭弹窗
driver.find_element_by_id('header-right').click()

time.sleep(3)
driver.quit()

3、frame与iframe

frame标签:frameset(不需要特殊处理)、frame、iframe

引导webdriver进入frame中:switch_to.frame(reference)

# -*-coding:utf-8-*-

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("")
driver.implicitly_wait(10)

#切换进iframe结构
driver.switch_to.frame('iframeContainer')
time.sleep(1)
driver.find_element_by_id('noWindow').find_element_by_tag_name('input').click()

time.sleep(3)
driver.quit()
  • switch_to_default_content():退出frame结构
  • switch_to.parent_frame():切换到上层的frame

标签:webdriver,07,Dom,Selenium,frame,driver,alert,time,import
From: https://www.cnblogs.com/ddupfan/p/17506056.html

相关文章

  • JavaScript进阶07笔记
    Javascript进阶学习在最新版本的火狐浏览器上才有的功能。火狐浏览器内置的Web控制台非常适合学习JavaScript,Web控制台包含两个输入模式——单行模式、多行模式。单行模式web控制台不仅可以展示当前已加载页面的信息,还包含一个可以在当前页面执行Javascript表达式的命......
  • AtCoder Beginner Contest 307 G Approximate Equalization
    洛谷传送门AtCoder传送门考虑我们如果确定了最终态\(B=(B_1,B_2,...,B_n)\),如何计算最少操作次数。显然从左往右依次使\(A_i=B_i\)。当操作到第\(i\)个位置时,此时\(A'_i=\sum\limits_{j=1}^iA_j-B_j\),所需操作次数为\(|A'_i|\)。令\(C_i=\sum\limits_{......
  • liunx服务器使用selenium
    前言最近在本地windows系统(下面简称本地)用selenium写了一个自动化爬虫,放到我liunx服务器(下面简称服务器)上面运行报错,记录处理流程一、服务器下载google-chrome、chromedriver一开始以为和本地一样,下好chrome浏览器和驱动就可以直接运行了(太天真了~)1、下载chromewgethttps://dl.goo......
  • 07.生成器模式(Builder)
    使用生成器模式来解决问题定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的结构和说明Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作。ConcreteBuilder:具体的生成器实现,实现各个部件的创建,并负责组装Produ......
  • DOM Select对象
    DOMSelect对象   ----代表HTML表单中的一个下拉框      <select>标签每出现一次,一个Select对象就会被创建。 举例参考:  <selectid="test"><optionvalue="0">1000</option><optionvalue="1">2000</option><option......
  • AtCoder Beginner Contest 307 ABCDE
    AtCoderBeginnerContest307A-WeeklyRecordsProblemStatement题意:告诉你有几个礼拜,问你每个礼拜走的路程和。Solution思路:按题意模拟,每7天加起来就行。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intmain(){ intn; cin>>n; llsum=......
  • Linux多线程07-线程属性
    线程属性类型:pthread_attr_t描述:pthread_attr_setdetachstate()函数将由attr引用的线程属性对象的分离状态属性设置为detachstate中指定的值。分离状态属性确定使用线程属性对象attr创建的线程将在可连接状态还是分离状态下创建。可以在detachstate中指定以下值:P......
  • 07前后端项目上传gitee,后端多方式登录接口,发送短信功能,发送短信封装,短信验证码接口,短
    1前后端项目上传到gitee#公司里: -前端一个仓库---》一个团队-后端一个仓库---》一个团队-微服务:两三个人一个服务---》一个项目一个仓库-网上开源软件,前后端都在一起#在远端建立前端仓库#本地代码提交到远成仓库2后端多方式......
  • 下载中间件实战-Scrapy与Selenium结合
    下载中间件实战-Scrapy与Selenium结合有的页面反爬技术比较高端,一时破解不了,这时我们就是可以考虑使用selenium来降低爬取的难度。问题来了,如何将Scrapy与Selenium结合使用呢?思考的思路: 只是用Selenium来帮助下载数据。因此可以考虑通过下载中间件来处理这块内容。Spider文......
  • CodeForces 1842G Tenzing and Random Operations
    洛谷传送门CF传送门原来还不会这种拆期望的套路设\(b_j\)为第\(j\)次操作中选择的\(i\),所求即为\(E(\prod\limits_{i=1}^n(a_i+\sum\limits_{j=1}^m[b_j\lei]\timesv))\)。乘法也可以考虑拆期望。我们有最基础的性质\(E((a+b)\times(c+d))=E(ac)......