如何使用 Selenium 在 JavaScript 网站上查找元素?

How to find elements on a JavaScript Website with Selenium?

我想为自己自动搜索一些东西,但我在这里遇到了一些问题。 在这个网站上:

https://shop.orgatop.de/

程序找不到搜索栏,我也不知道为什么。

driver = webdriver.Firefox()
driver.get('https://shop.orgatop.de/')
input_search = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="solrSearchTerm"]')))
input_search.click()
input_search.send_keys('asd')
input_search.send_keys(Keys.RETURN)

该元素存在于嵌套 iframe 中,如 innerFrame>catalog>content>input。您需要先切换这些框架才能访问输入搜索框。

诱导 WebDriverWait() 和 frame_to_be_available_and_switch_to_it()

driver = webdriver.Firefox()
driver.get('https://shop.orgatop.de/')
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"innerFrame")))
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"catalog")))
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"content")))
input_search = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="solrSearchTerm"]')))
input_search.click()
input_search.send_keys('asd')
input_search.send_keys(Keys.RETURN)

浏览器快照: