如何使用Selenium Webdriver

时间:2017-04-14 16:40:55

标签: python html5 selenium

我正在尝试使用其元素从Tripadvisor.com上的搜索结果中选择一个URL,但我所有的努力都没有成功。 这是我的代码:

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome()
base_url = 'https://www.tripadvisor.in/'
driver.get(base_url)

hotel = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'mainSearch')))
#hotel = driver.find_element_by_id("mainSearch")
hotel.send_keys('the leela palace')
time.sleep(0.5)

loc = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'GEO_SCOPED_SEARCH_INPUT')))
#loc = driver.find_element_by_id("GEO_SCOPED_SEARCH_INPUT")
loc.send_keys('New Delhi, India')
time.sleep(0.5)

search = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'SEARCH_BUTTON')))
search.submit()
time.sleep(1)

url = driver.find_element_by_class_name("dp_cr.loc1759051")
page_url = url.getAttribute("data-url")

以下是我尝试从以下网站获取信息的网站的html部分:

<div class="dp_cr loc1759051" data-url="/Hotel_Review-g304551-d1759051-Reviews-The_Leela_Palace_New_Delhi-New_Delhi_National_Capital_Territory_of_Delhi.html?t=304551">
<div class="date_picker_wrap">
<div class="prw_rup prw_datepickers_desktop_horizontal_styleguide_icon" data-prwidget-name="datepickers_desktop_horizontal_styleguide_icon" data-prwidget-init="handlers">
<span class="unified-picker" data-datetype="CHECKIN" data-emptytext="Check In" data-trackingcontext="CheckIn|DATES" data-didcreatedefaultdates="false" data-dateformat="dd/MM/yyyy" onclick="(ta.prwidgets.getjs(this,'handlers')).onDatePickerClick(this, false);">
<span class="picker-inner">
<span class="ui_icon calendar"></span> 
<span class="picker-label"> Check In </span></span></span>
<span class="unified-picker" data-datetype="CHECKOUT" data-emptytext="Check Out" data-trackingcontext="CheckOut|DATES" data-dateformat="dd/MM/yyyy" onclick="(ta.prwidgets.getjs(this,'handlers')).onDatePickerClick(this, false);"><span class="picker-inner"><span class="ui_icon calendar"></span> <span class="picker-label"> Check Out </span></span></span></div></div><div class="crOverlayButton"><span class="ui_button original large w100p" onclick="ta.page.gatherDatesNear(this);">Show Prices </span></div></div>

我正在尝试获取脚本的 data-url 部分,以便我可以将其连接到我的基本URL并跳转到该页面。此外,如果有一种方法可以直接点击搜索结果链接,那将更容易。但我无法找到搜索结果的元素。

2 个答案:

答案 0 :(得分:1)

对您的代码进行更正。

  • 而不是className使用css选择器(如果它,我们不能使用classname 名称中有空格)

  • 对于获取属性值的webelement,我们将使用webelement.get_attribute方法但不是 的getAttribute。

用以下代码替换最后两行代码。

url = driver.find_element_by_css_selector(".dp_cr.loc1759051")
page_url = url.get_attribute("data-url")

让我知道它是否适合你。

答案 1 :(得分:1)

导航到搜索结果页面的最简单方法是单击每个结果。您可以使用下面的CSS选择器

来完成此操作
Item

这将返回搜索结果的集合,然后您可以单击任何所需的结果页面。