python+selenium 抢会议室

  • 首先介绍下selenium查找元素的方法:

  find_element_by_id()                              #通过id进行元素查找

  find_element_by_name()                        #通过name进行元素查找,一般用来查找表单元素

  find_element_by_class_name()              #通过className进行查找(查找单个)

  find_elements_by_class_name()            #通过className进行查找(查找多个)

 find_element_by_tag_name()                 #通过标签元素查找单个

 find_elements_by_tag_name()               #通过标签查找多个元素,返回一个list eg:find_elements_by_tag_name(‘div’)

 find_element_by_css_selector()            #通过选择器进行查找 (查找单个)s

 find_elements_by_css_selector()          #通过选择器进行查找(查找多个) 返回一个list eg: find_elements_by_css_selector('div.username')

 find_element_by_link_text(link_text)     #查找a标签中内容为link_text的元素

 find_element_by_partial_link_text(link_text) #查找a标签中内容包含link_text的元素

 find_element_by_xpath()                      #通过xpath进行查找

  • 下面是关于抢会议室的具体代码 
    from selenium import webdriver
    from time import sleep
    
    login_url = '会议室的登录地址:url'
    user_name = 'your_username'
    psw = 'your_password'
    # 时间为24小时制,上午5点为05,下午5点为17
    start_time = '17' address = '北京4#楼1层1A' def login(): browser.find_element_by_class_name('login__input-username___1sZTr').send_keys(user_name) browser.find_element_by_class_name('login__input-password___1ai2m').send_keys(psw) sleep(1) browser.find_element_by_css_selector('.login__button___1qk3J').click() print('登录成功了...') def getFreeRoom(): global Refresh Refresh = False # 逐渐滚动浏览器窗口,令ajax逐渐加载 for i in range(0, 1): browser.execute_script("document.getElementsByClassName('am-list-view-scrollview')[0].scrollTop=100000"); i += 1 sleep(1) roomItemList = browser.find_elements_by_css_selector('.roomItem') # print(roomItemList) sleep(1) for item in roomItemList: # 北京6#楼7层明治 if item.find_element_by_class_name('gray3').text == address: freeList = item.find_elements_by_css_selector('.free') freeDataTimeList = [] for free in freeList: freeDataTimeList.append(free.get_attribute('data-time-index')) print(freeDataTimeList) if start_time in freeDataTimeList: Refresh = True for free in freeList: if free.get_attribute('data-time-index') == start_time: free.click() sleep(1) browser.find_element_by_css_selector('.sunl-input').send_keys('whj自动抢会议室') browser.find_element_by_css_selector('.query-button').click() break else: Refresh = False break def main(): global browser browser = webdriver.Chrome() # browser = webdriver.Firefox() # 打开登录页面 browser.get(login_url) sleep(3) login() sleep(1) # 适配会议室的bug browser.find_element_by_xpath('/html/body/div/div/div[2]/div[2]/div/div[2]/div[2]/div/div').click() sleep(1) browser.find_element_by_xpath('/html/body/div/div/div[2]/div[2]/div/div[2]/div[1]/div/div').click() sleep(3) getFreeRoom() global count count=1 print(u"循环点击查询... 第 %s 次" % count) while Refresh==False: count=count+1 sleep(2) browser.refresh() sleep(3) getFreeRoom() print(u"循环点击查询... 第 %s 次" % count) if __name__=='__main__': main()

  

原文地址:https://www.cnblogs.com/fewhj/p/11452525.html