您的位置:首页 > 健康 > 美食 > 深圳软件定制公司排名_潞电建设公司官网_济宁seo公司_磁力搜索器kitty

深圳软件定制公司排名_潞电建设公司官网_济宁seo公司_磁力搜索器kitty

2025/1/3 21:51:52 来源:https://blog.csdn.net/Meggie35/article/details/143505219  浏览:    关键词:深圳软件定制公司排名_潞电建设公司官网_济宁seo公司_磁力搜索器kitty
深圳软件定制公司排名_潞电建设公司官网_济宁seo公司_磁力搜索器kitty

在测试网页运行爬取的时候,最害怕的就是遇到弹窗。例如最近的双十一双十二的活动,就会弹出这种弹窗:
在这里插入图片描述
有时候也不能忽略,因为如果不把它去掉,获取页面的元素就会失败。

1. 弹窗出现的原理,通过以下的方式触发出来:

1.用户交互: 最常见的触发方式,比如点击一个按钮或链接,弹窗就会出来。

2.页面加载: 页面加载完成后,自动显示弹窗。

3.定时器: 使用JavaScript的setTimeout或setInterval函数,在一定时间后显示弹窗。
4. 事件监听:
监听特定的事件(如鼠标移动、键盘输入等),在事件发生时显示弹窗。

在这里插入图片描述

2. 弹窗的处理方法:

  1. 处理浏览器内置弹窗(Alert、Confirm、Prompt)

    • 对于Alert类型的弹窗,可以使用以下代码来接受弹窗:
      from selenium import webdriver
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()
      driver.get("网页地址")
      driver.find_element(By.ID, "alertButton").click()
      wait = WebDriverWait(driver, 10)
      wait.until(EC.alert_is_present())
      alert = driver.switch_to.alert
      alert_text = alert.text
      print(alert_text)
      alert.accept()  # 接受弹窗
      driver.quit()
      
    • 对于Confirm类型的弹窗,除了接受弹窗外,还可以取消弹窗:
      driver.find_element(By.ID, "confirmButton").click()
      wait.until(EC.alert_is_present())
      confirm = driver.switch_to.alert
      confirm_text = confirm.text
      print(confirm_text)
      confirm.dismiss()  # 取消弹窗
      driver.quit()
      
    • 对于Prompt类型的弹窗,可以输入文本并接受弹窗:
      driver.find_element(By.ID, "promptButton").click()
      wait.until(EC.alert_is_present())
      prompt = driver.switch_to.alert
      prompt_text = prompt.text
      print(prompt_text)
      prompt.send_keys("测试文本")  # 输入文本
      prompt.accept()  # 接受弹窗
      driver.quit()
      
  2. 处理自定义弹窗

    • 对于网页上的自定义弹窗,通常需要定位到弹窗中的关闭按钮或其他元素,并使用Selenium的点击事件来模拟用户操作。例如,如果弹窗中有一个关闭按钮,可以这样操作:
      driver.find_element(By.ID, "closeButton").click()  # 假设关闭按钮的ID是closeButton
      

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com