python selenium处理JS的alert弹窗

news/2024/7/19 16:17:57 标签: selenium, js
  • 场景描述

总裁小说网我的书架收藏了几本小说,其中部分小说我不想收藏了,利用python自动登录,删除书架里面不想要的小说,例如删除《万界仙王》…

在这里插入图片描述

  • 代码
# coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoAlertPresentException


class zongcai:
    def __init__(self):
        self.driver = webdriver.Chrome(
            executable_path=r"C:\Users\Administrator\AppData\Local\Google Chrome\Chromebin\chromedriver.exe")  # webdriver路径
        self.url = "https://www.zongcaidarentilihaoya.com/login.php"  # 登录url
        self.bookcase = "https://www.zongcaidarentilihaoya.com/modules/article/bookcase.php"  # 书架url

    def request(self):
        try:
            self.driver.get(self.url)
            self.driver.maximize_window()  # 窗口最大化
            self.driver.find_element_by_name("username").send_keys("scrapy_zhang")  # 发送账号到输入框
            self.driver.find_element_by_name("password").send_keys("zcc@199621")  # 发送密码到输入框
            self.driver.find_element_by_name("submit").click()  # 定位提交按钮并点击登录
            time.sleep(3)  # 停留3秒等待网页跳转
            self.driver.get(self.bookcase)  # 跳转到书架页面,里面有展示我收藏的书籍
            wait = WebDriverWait(self.driver, 10)  # 设置10s元素加载超时时间,10s内未完成则超时报错
            wait.until(EC.presence_of_element_located((By.ID, 'bookcon')))  # 等待收藏的书籍内容元素加载完成
            lis = self.driver.find_elements_by_xpath('''//*[@id="bookcon"]/tbody/tr''')[1:]
            for li in lis:
                name = li.find_element_by_xpath("./td[2]/p").text  # xpath标签获取书记名称
                if name == "万界仙王":
                    li.find_element_by_xpath("./td[5]/p/a").click()  # 获取移除书籍的元素并点击
                    try:
                        # 网上的教程可能是这样:self.driver.find_element_by_id,其实当前这个方法已经被弃用了,使用self.driver.switch_to.alert方法获取alert对象
                        alert = self.driver.switch_to.alert
                        time.sleep(2)  # 
                        alert.accept()  # 调用alert对象的accept()方法,模拟鼠标单击alert弹窗上的“确定”按钮
                        time.sleep(2)
                        print(f'{name}被移除书架')
                    except NoAlertPresentException as e:
                        print(e)
        except Exception as e:
            print(e)

    def close(self):
        time.sleep(10)
        self.driver.close()


if __name__ == '__main__':
    zc = zongcai()
    zc.request()
    zc.close()
  • 执行过程
    在这里插入图片描述
    我们可以看到,登录成功跳转到书架,书架里面收藏的《万界仙王》的移除按钮被点击,弹出一个是否确认删除的alert对话框,调用alert对象的accept()方法,模拟鼠标单击alert弹窗上的“确定”按钮,书籍被成功删除。
    小说网站的账号密码我已经共享了,大家也可以自己去注册一个,不需要什么验证,着手去玩玩吧,喜欢的点个赞吧~!

http://www.niftyadmin.cn/n/898892.html

相关文章

Python3实现发送邮件、发送图片、附件等

生成QQ邮箱授权码 点击开启,然后按照提示短信验证即可。PS:友情提示,珍爱生命,远离网易163… 简单邮件发送 # codingutf-8 import smtplib from email.mime.text import MIMEText# 配置邮箱信息 sender xxxxxxqq.com # 发件…

Python3 selenium获取起点收藏榜单Top100并解析字体加密

1、爬虫简介 使用selenium模块获取起点中文作品书架作品排行,并打印相关的排行信息。 2、站点分析 需要爬取的内容 VIP收藏榜共5页,每一页展示的有20条排名数据,爬取完每一页的数据之后,自动点…

Windows平台chrome webdriver的下载与安装

1、确认Chrome浏览器的版本 1.打开Chrome浏览器,点击右上角的三个点样式图标,然后先帮助,再点击关于 Google Chrome 2.得到当前的版本号,比如我的是91.0.4472.124 2、下载对应的Webdriver 1、下载地址http://npm.taobao.org/…

selenium+requests获取52PK英雄联盟各英雄皮肤

简介 目标站点:https://lol.52pk.com/pifu/hero 实现方式:selenium进行图片信息获取并翻页,requests请求图片的url并保存图片到本地 Python实现 运行程序前,请先确认已经安装了requests、selenium第三方模块,并下载了…

百度文字识别OCR识别图片文字内容

AI接入 参考官方文档:AI接入指南 参考:网络图片文字识别申请 参考:鉴权认证机制,用于获取access token 网络文字识别示例代码 下面是官方给的示例代码,从代码中我们可以看出,只要获取到access_token就…

pandas计算excel两列的日期差

原始Excel数据 诉求:往Excel中追加两列"当前时间"、“时间差”,计算日期和当前时间相差的天数、小时、秒, 注:一天等于86400秒 插入两列数据到表格 # codingutf-8 import pandas as pd import datetimedf pd.read_ex…

CentOS 7安装实时监控日志文件的swatchdog

swatchdog介绍 swatchdog是从一个用于监视Unix syslog工具生成的日志的脚本发展起来的,它可以监视任何类型的日志。swatchdog(Simple WATCH DOG)是一个简单的Perl脚本,用于监视类Unix系统(比如Linux)上的活动日志文件。它根据可以在配置文件中定义的正则…

虚拟机获取不到IP的解决办法

新创建的CentOS 7虚拟机,使用的DHCP获取地址,一直获取不到IP地址,service network restart命令执行多次都不行,使用如下方式后OK su - root dhclient -vifconfig