使用Selenium Python单击按钮尝试了许多使用xpath和css选择器的方法,但没有成功
我试图用Python中的Selenium单击以黄色突出显示的这个 从本网页: 我已通过cookies和允许/阻止通知弹出窗口 我尝试在普通窗口(?),我的意思是我没有尝试在无头模式 使用Chrome和Firefox webdriver进行了尝试:结果相同 我尝试了以下所有方法,但都没有成功:使用Selenium Python单击按钮尝试了许多使用xpath和css选择器的方法,但没有成功,python,selenium,xpath,iframe,css-selectors,Python,Selenium,Xpath,Iframe,Css Selectors,我试图用Python中的Selenium单击以黄色突出显示的这个 从本网页: 我已通过cookies和允许/阻止通知弹出窗口 我尝试在普通窗口(?),我的意思是我没有尝试在无头模式 使用Chrome和Firefox webdriver进行了尝试:结果相同 我尝试了以下所有方法,但都没有成功: driver.find_element_by_xpath("//input[@value='Jouer et s'inscrire !']").click() driver.find
driver.find_element_by_xpath("//input[@value='Jouer et s'inscrire !']").click()
driver.find_element_by_xpath("//input[@type='submit' and @value='Etape suivante']").click()
driver.find_element_by_xpath("//button[contains(., 'Jouer et s'inscrire !')]").click()
driver.find_element_by_xpath("//*[@id='jouerBtn']").click()
driver.find_element_by_xpath("/html/body/div[1]/div[3]/div/form/input[3]").click()
driver.find_element_by_css_selector("[type=submit]").click()
我做错了什么?您要查找的按钮位于
中,您必须先切换到该按钮,然后才能通过xpath执行查找元素:
driver.switch_to.frame('qualifio-0136862F-D302-43A1-A613-F291B4D70337')
找到按钮的最简单方法是:
driver.find_element_by_id('jouerBtn')
下面的XPath是正确的
driver.find_element_by_xpath("//*[@id='jouerBtn']").click()
driver.find_element_by_xpath("/html/body/div[1]/div[3]/div/form/input[3]").click()
以下XPath/CSS不正确
driver.find_element_by_xpath("//input[@value='Jouer et s'inscrire !']").click()
driver.find_element_by_xpath("//input[@type='submit' and @value='Etape suivante']").click()
driver.find_element_by_xpath("//button(contains(., 'Jouer et s'inscrire!')]").click()
driver.find_element_by_css_selector("[type=submit]").click()
元素(按钮)不在屏幕的可见区域中。因此,在单击之前,应将元素带入可见区域
位置语法的更正
driver.find_element_by_xpath("//input[@value=\"Jouer et s'inscrire !\"]").click()
driver.find_element_by_xpath("//input[@type='button' and @value=\"Jouer et s'inscrire !\"]").click()
driver.find_element_by_xpath("//input[contains(@value, 'Jouer et s')]").click()
driver.find_element_by_css_selector("[type='button']").click()
这是一个令人兴奋的元素!在
中,因此您必须:
- 使所需帧可用并切换到该帧
- 使所需元素可单击
- 您可以使用以下任一选项:
- 使用
CSS\u选择器
:
driver.get('https://www.femina.fr/article/jeu-concours-spartoo-decembre-2020')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#didomi-notice-agree-button>span"))).click()
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[id^='qualifio']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#jouerBtn"))).click()
- 使用
XPATH
:
driver.get('https://www.femina.fr/article/jeu-concours-spartoo-decembre-2020')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(., 'accepte')]"))).click()
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@id, 'qualifio')]")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='jouerBtn']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
- 浏览器快照:
参考
您可以在以下内容中找到一些相关讨论:
尝试添加时间睡眠并获取xpath右键单击按钮>检查元素>控制单击输入>复制完整xpath这是我尝试过的第五次,如果您查看我的代码:driver.find\u element\u by\u xpath(“/html/body/div[1]/div[3]/div/form/input[3]”。click()您是否首先单击屏幕请求接受cookies?如果你能帮上忙。发布最小可复制代码2。您得到的确切错误。@Booboo是的,我传递了cookies和允许/阻止通知弹出窗口。我还没有太多的代码,因为如果我不能传递这个按钮,我将不会编写任何代码:)错误非常简单,对于我尝试的每个方法都是一样的:没有这样的元素:无法定位元素。