首页 > 编程语言 >【python】自动化登录学习通页面-多表单切换

【python】自动化登录学习通页面-多表单切换

时间:2024-05-27 18:00:41浏览次数:20  
标签:python frame driver 表单 content find element ID 页面

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
driver.maximize_window()
driver.implicitly_wait(5)
driver.get("http://i.chaoxing.com/")

# 登录学习通
driver.find_element(By.ID, "phone").send_keys("")
driver.find_element(By.ID, "pwd").send_keys("")
driver.find_element(By.ID, "loginBtn").click()

# ----------------------------------------------------------------------
# 多表单的切换

# 等待 ID 为 frame_content 的iframe表单可用
wait = WebDriverWait(driver, 10)
frame = wait.until(EC.presence_of_element_located((By.ID, "frame_content")))

def switch_to_frame(driver, by, value):
    while True:
        try:
            frame = driver.find_element(by, value)
            driver.switch_to.frame(frame)
            break
        except StaleElementReferenceException:
            continue

# 切换到 frame_content 的iframe表单中
switch_to_frame(driver, By.ID, "frame_content")

# 获取添加课程的文本信息
text = driver.find_element(By.ID, "addCourse").text
print(text)

# 回退到上一层的frame
driver.switch_to.parent_frame()
text2 = driver.find_element(By.ID, "siteName").text
print(text2)

# 重新查找并切换到 frame_content 的iframe表单中
switch_to_frame(driver, By.ID, "frame_content")

# 回退到最外层的frame
driver.switch_to.default_content()

text3 = driver.find_element(By.ID, "siteName").text
print(text3)

标签:python,frame,driver,表单,content,find,element,ID,页面
From: https://blog.csdn.net/weixin_45953140/article/details/139244461

相关文章

  • Python调用科大讯飞在线语音合成API --内附完整项目
    一,注册讯飞账号,并实名制。讯飞开放平台-以语音交互为核心的人工智能开放平台(xfyun.cn)二、找到音频合成,按页面提示申请免费试用。在线语音合成_免费试用-讯飞开放平台(xfyun.cn)三、申请免费使用后,找到API信息如下:​ 四、找到开发者文档,仔细阅读语音合成(流式版)WebAP......
  • react解决电脑分辨率及缩放导致页面变形的问题
    此处借鉴Vue3解决电脑分辨率及缩放导致页面变形的问题-CSDN博客:新建devicePixelRatio.js:/***@description校正windows页面在系统进行缩放后导致页面被放大的问题,通常放大比例是125%、150%***/classDevicePixelRatio{ constructor(){ } //获取系统类型 _get......
  • Python定义一个分数类,分别完成分数的加减乘除
    目标:定义分数类,使两个分数可以进行加减乘除等操作代码实现:classFraction1:def__init__(self,up,down):self.up=upself.down=downdef__str__(self):returnstr(self.up)+"/"+str(self.down)defadd(self,other):up1......
  • 基于SpringBoot的酒店订房系统-82159(免费领源码+数据库)可做计算机毕业设计JAVA、PHP、
    springboot酒店订房系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,酒店订房系统当然也不能排除在外。酒店订房系统是以实际运用为开发背景,运用软件工程开发方法,采用springboot技术构建的一个管理系统......
  • python元类
    介绍python中的"类"也是对象,加载"类"也有创建对象的过程。用于创建"类"对象的,就是元类。元类可以自定义。元类示例classDemoMeta(type): def__new__(cls,name,bases,attrs):  cls_instance=super().__new__(cls,name,bases,attrs)  #name:类名|str......
  • Python面向对象——创建类:学生成绩等级
    题目:不同分数对应等级,score>=90分为“优秀”,80<=score<90为“良好”,70<=score<80为“中等”,60<=score<70为“及格”,score<60为“不及格”。1学习创建类采用classclassPerson:#创建类country="Chinese"#类属性,可以通过类名来访问def__init__(......
  • Python实现求多个集合之间并集的方法
    目的:求多个集合之前的并集,例如:现有四个集合C1={11,22,13,14}、C2={11,32,23,14,35}、C3={11,22,38}、C4={11,22,33,14,55,66},则它们之间的并集应该为:C1&C2&C3={11}、C1&C2&C4={14}、C1&C3&C4={22}。如下图所示:实现方法:Python自带了......
  • Python中类创建和实例化过程
    一、type()1、创建类的两种方式方式一classMyClass(object):deffunc(self,name):print(name)myc=MyClass()print(MyClass,type(MyClass))print(myc,type(myc))我们创建了一个名为MyClass的类,并实例化了这个类,得到其对象myc上面代码打印的结果为:<......
  • python实现获取成员所在的多个位置
    注:本代码主要是为了实现多个集合之间求并集时的辅助代码,简单的举个例子来说明代码的功能。约定:例如{11:[2,3]}表示数据11在集合2和集合3中都存在。现有以下数据:d0={38:[2],11:[2,3],22:[2,3]}d1={11:[0,0,1,3],13:[0,0],22:[0,0,3],14:[0,0,1,3]......
  • Python小技巧:一种字符串的排序方式
    1.排序方式假设有一个序列,数据为:['n1','n2','n10','n11','n21','n3','n13','n20','n23'],排序后需要达到这个效果:['n1','n2','n3','n10','......