为什么单击with selenium在新浏览器中不起作用,但可以在控制台中工作

时间:2016-02-17 14:35:32

标签: python selenium xpath webdriver

我目前正在使用webdriver.Chrome来抓取航班价格搜索网站中的数据。填写搜索字符后,搜索按钮上的单击操作不起作用。完成之后,我使用相同的webdriver会话单独运行点击代码,它确实有效。

搜索按钮的Html代码是

<div class="crl_sp_action">
     <button class="btn_search" type="submit" data-track="key=101020008&amp;val=国内搜索">搜&nbsp;索</button>

对于其中搜索意味着搜索的中文字词感到抱歉。

查找和点击按钮的代码是

driver.find_element_by_xpath('//button[@type="submit"]').click()

运行后,点击按钮似乎无法正常工作,但它会打印&#34;加载完成&#34;。

代码的整个部分是

import time
import datetime
from selenium import webdriver

driver = webdriver.Chrome("C:/Users/tswz/Dropbox/Entertainment/Qunar/chromedriver.exe")
driver.get('http://flight.qunar.com')
driver.maximize_window()
time.sleep(5)
from_city=u'杭州(HGH)'
to_city=u'北京(BJS)' 

date = datetime.date.today()
tomorrow = date+datetime.timedelta(days=3)
tomorrow_string = tomorrow.strftime('%Y-%m-%d')

driver.find_element_by_name('fromCity').clear()
driver.find_element_by_name('fromCity').send_keys(from_city)
driver.find_element_by_name('toCity').clear()
driver.find_element_by_name('toCity').send_keys(to_city)
driver.find_element_by_name('fromDate').clear()
driver.find_element_by_name('fromDate').send_keys(tomorrow_string)
driver.find_element_by_xpath('//button[@type="submit"]').click()

time.sleep(6)
print "load done!"

另一个问题是如何包含班级&#34; crl_sp_action&#34;在xpath中,因为网页中有另一个搜索按钮。有人建议用css代替xpath,那怎么办?

1 个答案:

答案 0 :(得分:0)

这是一个表单,因此请使用submit()而不是点击

driver.find_element_by_xpath('//button[@type="submit"]').submit()