Selenium:无法单击 iframe 中的按钮

我使用 selenium 加载页面:http://www.legorafi.fr/ 接下来,我尝试单击“Tout Accepter”按钮,但即使使用 css 选择器,它也不起作用。这是为了饼干。

我尝试过这样的事情:

driver.find_element_by_css_selector('').click()

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

https://img4.mukewang.com/64f2ef31000155ba14370677.jpg

海绵宝宝撒
浏览 246回答 3
3回答

慕运维8079593

该元素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,"//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 WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as EC浏览器快照:

慕后森

该元素存在于 an 内部,iframe您需要切换iframe才能访问该元素。induce WebDriverWait() 和 wait for frame_to_be_available_and_switch_to_it() 以及下面的 css 选择器引发WebDriverWait()并等待element_to_be_clickable()并跟随xpathdriver.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 Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC

哔哔one

首先切换到横幅框架,然后单击接受按钮:from selenium import webdriverurl = "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"&nbsp; &nbsp; &nbsp;&nbsp;driver.find_element_by_xpath(button).click()(我使用 XPath 单击按钮,但这只是个人喜好)希望有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python