大佬教程收集整理的这篇文章主要介绍了如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想点击“Akkoord”按钮,但我无法点击。我已经尝试了不同的方法,但它们不起作用。任何帮助将不胜感激。
我试过的代码之一。
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()
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 中单击弹出窗口按钮全部内容,希望文章能够帮你解决如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。