亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Selenium:無法單擊 iframe 中的按鈕

Selenium:無法單擊 iframe 中的按鈕

海綿寶寶撒 2023-09-02 16:14:59
我使用 selenium 加載頁面:http://www.legorafi.fr/ 接下來,我嘗試單擊“Tout Accepter”按鈕,但即使使用 css 選擇器,它也不起作用。這是為了餅干。我嘗試過這樣的事情:driver.find_element_by_css_selector('').click()這是帶有文字“Tout Accepter”的藍色按鈕
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

該元素Tout Accepter位于 an 內<iframe>,因此您必須:

  • 誘導WebDriverWait等待所需的框架可用并切換到它。

  • 誘導WebDriverWait以使所需元素可單擊。

  • 您可以使用以下任一定位器策略:

  • 使用CSS_SELECTOR

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,"http://div[@id='appconsent']/iframe")))

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "http://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

瀏覽器快照:

https://img1.sycdn.imooc.com/64f2ef420001975f06530248.jpg

查看完整回答
反對 回復 2023-09-02
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

該元素存在于 an 內部,iframe您需要切換iframe才能訪問該元素。


induce WebDriverWait() 和 wait for 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


查看完整回答
反對 回復 2023-09-02
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

首先切換到橫幅框架,然后單擊接受按鈕:


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 單擊按鈕,但這只是個人喜好)


希望有幫助!


查看完整回答
反對 回復 2023-09-02
  • 3 回答
  • 0 關注
  • 362 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號