我用硒加载页面:http://www.legorafi.fr/ 接下来,我尝试单击“ Tout接受器”按钮,但是即使使用CSS选择器也无法使用。这是饼干。
我尝试过这样的事情:
driver.find_element_by_css_selector('').click()
这是带有文字“ Tout Accepter”的蓝色按钮
我该怎么办?
答案 0 :(得分:2)
该元素位于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
答案 1 :(得分:2)
元素 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'
浏览器快照:
您可以在以下位置找到一些相关的讨论
答案 2 :(得分:1)
首先切换到横幅框架,然后单击接受按钮:
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单击该按钮,但这只是个人喜好)
希望有帮助!