我是Python和Selenium的新手,并尝试使用选举数据(https://historico.servel.cl/SitioHistorico/index2008_alca.htm,下面的html代码)抓取网页。在此页面上,我需要使用Selenium进行导航,因为在菜单中选择项目时,网址不会更改。作为第一步,我需要选择左上角的“DivisiónGeografica”按钮。我尝试使用find_element_by_xpath()
导航到相应的代码。
但是,按xpath导航仅适用于#document
和<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
行以外的标记。例如,driver.find_element_by_xpath("/html/frameset[1]/frame")
让我接到#document
之前的第一个标记,但我无法选择之后的任何<body>
,<form>' or
标记。我还尝试使用标签名称选择元素,例如driver.find_element_by_name("DATOS")
,但没有成功。这是因为''和/或'#document'标签/行还是这里有什么问题?
我感兴趣的对象是<a href="geografico.htm" .... </a>
。您对如何使用xpath(或任何其他方法)选择它有什么建议吗?
非常感谢你的帮助! 最好, likeat.100
答案 0 :(得分:1)
此元素<a href="geografico.htm" .... </a>
位于框架中。您需要切换webdriver的焦点/控件以与其进行交互。
用于切换WebDriver的控件,您可以使用以下代码:
driver.switch_to.frame(driver.find_element_by_name('guiaFrame'))
然后您可以轻松地与提到的网络元素进行交互。
请记住,如果您在完成当前帧后将WebDriver的焦点切换回它的父/默认值,这总是一个很好的做法,因为您必须使用:
driver.switch_to.default_content()
HTH !!