然后,想想自己是怎么滑动滑块的,在滑块处按下左键不动,移动鼠标向右,到最右边,然后松手。要模拟这个过程就需要用到ActionChains了。
ActionChains(self.driver).click_and_hold(self.driver.find_element_by_id('nc_1_n1z')).perform()#按住滑块不动
ActionChains(self.driver).move_by_offset(xoffset=250, yoffset=0).perform()#直接到终点,可能速度太快,会被系统判错误操作(这也是我不用drag_and_drop这个函数的原因),快到终点时停下
for i in range(2):
ActionChains(self.driver).move_by_offset(xoffset=10, yoffset=0).perform()#再慢慢滑两步
sleep(0.1)
sleep(0.5)#滑完了之后稍等下,让系统判断完毕
ActionChains(self.driver).release().perform()#松开点击
self.driver.find_element_by_tag_name("button").click()#点击登录
kinds=self.driver.find_element_by_id('category_filter_id').find_elements_by_tag_name('li')#选择演唱会类别
for k in kinds:
if k.text=='演唱会':
k.click()
break
lists=self.driver.find_elements_by_id('content_list')[0].find_elements_by_tag_name('li')#获取所有可能演唱会
titles=[]
links=[]
self.choose_result=0
for li in lists:
word_link=li.find_element_by_tag_name('h3')
titles.append(word_link.text)
temp_s=word_link.get_attribute('innerHTML').find('href')+6
temp_e=word_link.get_attribute('innerHTML').find('target')-2
links.append(word_link.get_attribute('innerHTML')[temp_s:temp_e])
if li.find_element_by_tag_name('h3').text.find(self.place)!=-1:#选择地点正确的演唱会
self.choose_result=len(titles)
break
self.url="https:"+links[self.choose_result-1]
self.driver.get(self.url)#载入至购买界面
3.购票
datelist=self.driver.find_element_by_id("performList").find_elements_by_tag_name('li')#根据优先级选择一个可行日期
for i in self.date:
j=datelist[i-1].get_attribute('class')
if j=='itm':
datelist[i-1].click()
break
elif j=='itm itm-sel':
break
elif j=='itm itm-oos':
continue
sleep(1)
pricelist=self.driver.find_element_by_id("priceList").find_elements_by_tag_name('li')#根据优先级选择一个可行票价
for i in self.price:
j=pricelist[i-1].get_attribute('class')
if j=='itm':
pricelist[i-1].click()
break
elif j=='itm itm-sel':
break
elif j=='itm itm-oos':
continue
sleep(1.5)
cart=self.driver.find_element_by_id('cartList')
try:#各种按钮的点击
try:
cart.find_element_by_class_name('ops').find_element_by_link_text("立即预定").click()
self.status=3
except:
cart.find_element_by_class_name('ops').find_element_by_link_text("立即购买").click()
self.status=4
except:
cart.find_element_by_class_name('ops').find_element_by_link_text("选座购买").click()
self.status=5
self.num+=1
sleep(0.5)