我已经在python中编写了一些与selenium结合使用的代码来从一个网站中搜索“Latitude”,在这种情况下是“49°57'09”N(49.952500)“但由于某种原因我得到了TimeoutException而不是我无法理解我在哪里出轨。对此的任何意见都将非常感激。
我正在尝试的脚本:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.gcmap.com/airport/EDEF")
wait = WebDriverWait(driver, 10)
driver.switch_to_frame(0)
for item in wait.until(EC.presence_of_all_elements_located((By.XPATH, "//table[contains(@class,'vcard')]//td/abbr[@class='latitude']"))):
print(item.text)
driver.quit()
纬度所在的元素:
<td colspan="2" nowrap=""><abbr class="latitude" title="49.952500"></abbr>49°57'09"N (49.952500)</td>
这是我得到的错误:
80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
答案 0 :(得分:3)
此处的问题是所需的文字不在<abbr>
标记内,而是在其内部的<td>
标记内。要查找元素的父级,您可以使用XPath&#39> 双点语法和.find_element_by_xpath("..")
。此外,通过它的类名查找<abbr>
比使用它的XPath更清晰。注意下面的代码不需要等待(既不明示也不隐含):
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.gcmap.com/airport/EDEF")
item = driver.find_element_by_class_name('latitude')
itemParentText = item.find_element_by_xpath("..").text
>>> print(itemParentText)
49°57'09"N (49.952500)