html - python 3 Selenium : can't find element visible on screen

标签 html python-3.x selenium

我正在尝试使用 selenium 定位并单击网页上的元素。网页是https://www.innisfil.ca/使用此网页上的内置搜索栏,并通过单击下一步按钮遍历搜索结果。

下一个按钮存储在类为“search-next”的 span 元素中,如以下网站的一段 html 代码所示。

<font class="search-nav" face="arial,verdana,geneva,lucida" size="-1">
     <span class="search-prev">&lt;&lt;&nbsp;Prev</span>
     <span class="search-prevnext-sep">&nbsp;&nbsp;|&nbsp;&nbsp</span>
     <span class="search-next">
         <a class="search-nav" dir="ltr" href="https://search.freefind.com/find.html?pageid=r&amp;id=47055328&amp;query=environmental+assessment&amp;sbv=j2&amp;ics=1&amp;fr=10" target="">
             <b>Next</b>
             &nbsp;&gt;&gt;
         </a>
     </span>&nbsp;&nbsp;&nbsp;
</font>

这里是我编写的工作示例代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException

url ='http://www.town.innisfil.on.ca'
munip = "t"
bar_name = 'query'
search_term = "environmental assessment"
next_button_name = "search-next"

driver = webdriver.Chrome()
driver.get(url)

search_bar = driver.find_element_by_name(bar_name)
search_bar.send_keys("house")
search_bar.send_keys(Keys.RETURN)

try:
     span = driver.find_element_by_class_name(next_button_name)
     span.find_element_by_tag_name("a").click()
except NoSuchElementException:
     print("Can't find next button")

我的问题是为什么我可以在 html 的屏幕上看到按钮,但 selenium 似乎找不到它?我不太熟悉 html 的来龙去脉,这可能是非常明显的事情。在此先感谢您的帮助。

最佳答案

文本 house 的搜索结果显示在 iframe 中,idffse-overlay-ifr。所以你必须先切换到 ffse-overlay-ifr frame。这是您自己的代码,经过一些简单的修改,可以在我的 Windows 8 系统上完美运行:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

url ='http://www.town.innisfil.on.ca'
munip = "t"
bar_name = 'query'
search_term = "environmental assessment"
next_button_name = "search-next"
driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.maximize_window()
driver.get(url)
search_bar = driver.find_element_by_name("query")
search_bar.send_keys("house")
search_bar.send_keys(Keys.RETURN)
driver.switch_to_frame("ffse-overlay")
driver.find_element_by_xpath("//a[@class='search-nav']").click()
print("Next Button Clicked")

控制台输出:

Next Button Clicked

关于html - python 3 Selenium : can't find element visible on screen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46098382/

相关文章:

javascript - 如何查看用于显示隐藏的json数据的html代码?

python - 关于 pdfminer 的警告

python - 合并嵌套列表,将列(位于同一索引处的元素)放在一起

python-3.x - 在 Python 中使用 Selenium 单击按钮

java - Cucumber Scenario Outline 只运行了一次,即使它有 3 个场景

javascript - 如何在 python selenium 的 css 选择器中选择下一个直接元素?

javascript - 代码在 jsfiddle 中有效,但在 Lamp Localhost 中无效

javascript - 是否有一种 document.createElement 多个元素的简写方式?

html - Amazon Lambdas HTML 发布表单提交

python - 套接字聊天室 - python 3.7