微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

硒:无法在iframe中单击按钮

如何解决硒:无法在iframe中单击按钮

我用硒加载页面http://www.legorafi.fr/ 接下来,我尝试单击“ Tout接受器”按钮,但是即使使用CSS选择器也无法使用。这是饼干。

我尝试过这样的事情:

driver.find_element_by_css_selector('').click()

这是带有文字“ Tout Accepter”的蓝色按钮

enter image description here

我该怎么办?

解决方法

该元素位于iframe内部,您需要切换iframe才能访问该元素。

得出WebDriverWait()并等待frame_to_be_available_and_switch_to_it()并跟随CSS选择器

产生WebDriverWait()并等待element_to_be_clickable()并跟随xpath

driver.get("http://www.legorafi.fr/")
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"#appconsent>iframe")))
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[text()='Tout Accepter']"))).click()

您需要导入以下库

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

元素 Tout接受者位于CSS_SELECTOR中,因此您必须:

  • 诱导WebDriverWait使所需的帧可用并切换到

  • 引出WebDriverWait以使所需的元素可点击

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

  • 使用driver.get('http://www.legorafi.fr/') WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"div#appconsent>iframe"))) WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button.button--filled>span.baseText"))).click()

    XPATH
  • 使用driver.get('http://www.legorafi.fr/') WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//div[@id='appconsent']/iframe"))) WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(@class,'button--filled')]/span[contains(@class,'baseText')]"))).click()

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 注意:您必须添加以下导入:

    'YYYY-MM-d HH:mm:ss.S'
  • 浏览器快照:

legorafi


参考

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

,

首先切换到横幅框架,然后单击接受按钮:

from selenium import webdriver

url = "http://www.legorafi.fr/"
driver = webdriver.Chrome()
driver.get(url)
driver.switch_to.frame(2)
button = "/html/body/div/div/article/div/aside/section[1]/button"      
driver.find_element_by_xpath(button).click()

(我使用XPath单击该按钮,但这只是个人喜好)

希望有帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。