我找不到解决方案,如何使用硒xpath无法找到该元素。其他网站上的其他按钮始终可以正常工作。通常,我通常要做的就是打开一个页面并检查该元素,然后右键单击它并复制xpath。完成。
但是此网站www.gsc.com.my(马来西亚电影院预订网站)。似乎找不到按钮。它受到另一个安全层的保护吗?
让我们看下面的代码,
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"]"}
答案 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()