Selenium无法找到元素,这是使用xpath的搜索按钮

时间:2018-08-18 11:38:19

标签: python selenium xpath

我找不到解决方案,如何使用硒xpath无法找到该元素。其他网站上的其他按钮始终可以正常工作。通常,我通常要做的就是打开一个页面并检查该元素,然后右键单击它并复制xpath。完成。

但是此网站www.gsc.com.my(马来西亚电影院预订网站)。似乎找不到按钮。它受到另一个安全层的保护吗?

enter image description here

让我们看下面的代码,

from selenium import webdriver

chromedriver_path = './chromedriver.exe'

driver = webdriver.Chrome(chromedriver_path)  
driver.get('https://www.gsc.com.my')


driver.find_element_by_xpath("""//*[@id="btnNext"]""").click()

错误消息:

no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="btnNext"]"}

3 个答案:

答案 0 :(得分:1)

按钮位于iframe内,因此您需要在单击按钮之前切换到该框架:

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

driver.switch_to.frame('getQuickFilter_ctrl_ifrBox')

wait(driver, 10).until(EC.element_to_be_clickable((By.ID, "btnNext"))).click()

答案 1 :(得分:0)

因为有两个ID为btnNext的元素,所以您必须使用索引指定它们中的哪个,第一个为1,第二个为2。

driver.find_element_by_xpath("""//*[@id="btnNext"][1]""").click()

答案 2 :(得分:0)

您可以尝试使用以下CSS选择器:

div.container input#btnNext  

请注意,由于选中按钮位于 iframe 中,因此您需要先切换到iframe。

用于切换到iframe:

driver.switch_to.frame(driver.find_element_by_id("getQuickFilter_ctrl_ifrBox"))  

,并单击选中按钮

wait = WebDriverWait(driver, 10)
check_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.container input#btnNext")))  
check_button.click()