程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用 SELEnium 和 Pyhton 在 iframe 中单击弹出窗口按钮?

开发过程中遇到如何使用 SELEnium 和 Pyhton 在 iframe 中单击弹出窗口按钮的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用 SELEnium 和 Pyhton 在 iframe 中单击弹出窗口按钮的解决方法建议,希望对你解决如何使用 SELEnium 和 Pyhton 在 iframe 中单击弹出窗口按钮有所启发或帮助;

我想点击“Akkoord”按钮,但我无法点击。我已经尝试了不同的方法,但它们不起作用。任何帮助将不胜感激。

如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮

我试过的代码之一。

from SELEnium import webdriver
from webdriver_manager.Chrome import ChromeDriveRMANager
import time

driver = webdriver.Chrome(ChromeDriveRMANager().install())
driver.get('https://www.demorgen.be/nIEuws')

time.sleep(20)
driver.find_elements_by_class_name('message-component message-button no-children pg-accept-button')[0].click() 

解决方法

使用 xpath 或 css

CSS:

[class="message-component message-button no-children pg-accept-button"]


driver.find_elements_by_css_SELEctor('[class="message-component message-button no-children pg-accept-button"]')[0].click() 

xpath:

//*[@class="message-component message-button no-children pg-accept-button"]

driver.find_elements_by_xpath('//*[@class="message-component message-button no-children pg-accept-button"]')[0].click() 

find_elements_by_class_name 需要单个类名作为参数,这就是为什么它不起作用,因为类中的空格表示多个类。

按类查找实际上在幕后使用了 css。所以如果你想找到具有多个 class 的元素。您可以用“.”替换空格(这只适用于python)

driver.find_elements_by_class_name('message-component.message-button.no-children.pg-accept-button')[0].click() 

还有

元素在 iframe 内

from SELEnium.webdriver.support.ui import WebDriverWait
from SELEnium.webdriver.common.by import By
from SELEnium.webdriver.support import expected_conditions as EC



frame = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR,"#sp_message_container_404503 iframe")))
driver.switch_to_frame(framE)
driver.find_elemenT_By_css_SELEctor(
    '[class="message-component message-button no-children pg-accept-button"]').click()
,

元素 Akkoord 位于 <iframe> 内,因此您必须:

  • 诱导 WebDriverWait 使所需的框架可用并切换到它

  • 诱导 WebDriverWait 使所需的元素可点击

  • 您可以使用以下任一 Locator Strategies:

    • 使用 CSS_SELECTOR

      driver.get("https://www.demorgen.be/nieuws")
      WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[id^='sp_message_iframe']")))
      WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button[aria-label='Akkoord']"))).click()
      
    • 使用 XPATH

      driver.get("https://www.demorgen.be/nieuws")
      WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@id,'sp_message_iframe')]")))
      WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//button[@aria-label='Akkoord']"))).click()
      
  • 注意:您必须添加以下导入:

    from SELEnium.webdriver.support.ui import WebDriverWait
    from SELEnium.webdriver.common.by import By
    from SELEnium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:

如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮


您可以在以下位置找到一些相关讨论:

  • Ways to deal with #document under iframe
  • Switch to an iframe through SELEnium and python
  • SELEnium.common.exceptions.NoSucHelementexception: message: no such element: Unable to locate element while trying to click Next button with SELEnium
  • SELEnium in python : NoSucHelementexception: message: no such element: Unable to locate element

大佬总结

以上是大佬教程为你收集整理的如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮全部内容,希望文章能够帮你解决如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。