Exemple #1
0
 def swich_btn(self):
     button = self.find_element(self.swichbut_loc)
     action = ActionChains(self.driver)
     action.click_and_hold(button).perform()
     sleep(1)
     action.move_by_offset(400, 0).perform()
     action.reset_actions()
Exemple #2
0
    def move2(self, browser):
        """
        complete actions of sliding captcha
        """
        self.save_img(browser)
        self.calc_position(browser)

        offset = self.get_offset('./captcha/template1.jpg',
                                 './captcha/template2.jpg')
        print("offset calc by get_offset() is: {}".format(offset))
        tracks = self.get_tracks(offset)
        print("the track array is: {}".format(tracks))

        slider = browser.find_element_by_class_name("JDJRV-slide-btn")
        action = ActionChains(browser)
        action.click_and_hold(slider).perform()
        action.reset_actions()

        for i in tracks:
            action.move_by_offset(round(i), 0).perform()
            print('should move--<{}>--'.format(i))
            print('moving--<{}>--'.format(slider.location['x']))
            time.sleep(0.1)
            # in order to prevent accumulation actions
            action.reset_actions()  # useful
            # action = ActionChains(browser)   # useful

        time.sleep(4)
        action.release().perform()
    def move_slider(self, gap):
        print("开始滑动")
        slider = self.wait.until(
            EC.presence_of_element_located((By.ID, 'test')))
        while 1:
            action = ActionChains(self.driver)
            action.click_and_hold(slider).perform()
            action.reset_actions()  # 清除之前的action
            track = self.get_move_track(gap)
            for x in track:  # 只有水平方向有运动 按轨迹移动
                ActionChains(self.driver).move_by_offset(xoffset=x,
                                                         yoffset=0).perform()
                sleep(0.2)
            sleep(1)
            ActionChains(self.driver).release().perform()  # 松开鼠标
            sleep(5)

            try:
                alert = self.driver.find_element_by_id('test')
            except Exception as e:
                print('get alert error: %s' % e)
                alert = ''
            if alert:
                print(u'滑块位移需要调整: %d' % gap)
                if gap > 240:
                    gap = 145
                gap += 15
                sleep(5)
            else:
                print('滑块验证通过')
                break
Exemple #4
0
 def open_url(self, url):
     options = webdriver.ChromeOptions()
     # 不加载图片,加快访问速度
     # options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
     # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
     options.add_experimental_option('excludeSwitches',
                                     ['enable-automation'])
     options.add_argument('--headless')
     browser = webdriver.Chrome(
         executable_path="G:\chromedriver_win32\chromedriver.exe",
         options=options)
     wait = WebDriverWait(browser, 10)  # 超时时长为10s
     # 打开网页
     browser.get(url)
     try:
         WebDriverWait(browser, 5, 0.5).until(
             EC.presence_of_element_located(
                 (By.ID, "nc_1__scale_text")))  # 等待滑动拖动控件出现
         swipe_button = browser.find_element_by_xpath(
             '//*[@id="nc_1__scale_text"]/span')  # 获取滑动拖动控件
         # 模拟拽托
         action = ActionChains(browser)  # 实例化一个action对象
         action.click_and_hold(
             swipe_button).perform()  # perform()用来执行ActionChains中存储的行为
         action.reset_actions()
         action.move_by_offset(580, 0).perform()  # 移动滑块
     except Exception as e:
         print('get button failed: ', e)
 def contratoManutencao_Tela2(self):
     for i in range(2):
         self.callTab(i + 1)
         action = ActionChains(self.driver)
         marcador = self.driver.find_element_by_class_name("marker-label")
         marcador.click()
         time.sleep(2)
         action.reset_actions()
         contratoBox = self.driver.find_element_by_xpath(
             "//ul[@id='labels']//li[contains(text(),'Contrato de Manutenção')]"
         )
         filterBox = self.driver.find_element_by_id("filter")
         action.drag_and_drop(contratoBox, filterBox).perform()
         time.sleep(2)
         action.reset_actions()
         if i == 0:
             conexaoBox = self.driver.find_element_by_xpath(
                 "//ul[@id='labels']//li[contains(text(),'Conexão')]")
         else:
             conexaoBox = self.driver.find_element_by_xpath(
                 "//ul[@id='labels']//li[contains(text(),'Comunicação')]")
         filterBox1 = self.driver.find_element_by_xpath(
             "//ul[@id='filter']//li[1]")
         action.drag_and_drop(conexaoBox, filterBox1).perform()
         time.sleep(2)
         closeButton = self.driver.find_element_by_xpath(
             "//ul[@id='filter']//li[2]//a[@href='#']")
         closeButton.click()
         time.sleep(2)
         self.apply()
Exemple #6
0
    def my_parcels(self):
        '''my_parcels'''
        browser = self.driver
        # 悬停到MyAccount
        # 登录
        ese_my_account = browser.find_elements_by_xpath('//*[@class="txt"]')[1]
        actions = ActionChains(browser)
        actions.move_to_element(ese_my_account).perform()
        time.sleep(10)
        ese_sign_in = browser.find_elements_by_xpath('//*[@class="menu"]/li')[0]
        browser.execute_script("arguments[0].click();", ese_sign_in)
        time.sleep(10)
        ese_user_email = browser.find_elements_by_xpath('//*[@class="el-input__inner"]')[13]
        ese_user_email.send_keys(self.username)
        ese_user_pwd = browser.find_elements_by_xpath('//*[@class="el-input__inner"]')[14]
        ese_user_pwd.send_keys(self.password)
        # ese_rememberme = browser.find_elements_by_xpath('//*[@class="el-checkbox__inner"]')[1]
        # browser.execute_script("arguments[0].click();", ese_rememberme)
        ese_sign_in_btn = browser.find_elements_by_xpath('//*[@class="el-button el-button--success"]')[1]
        ese_sign_in_btn.click()

        time.sleep(10)
        actions.reset_actions()

        ese_myparcles_btn = browser.find_elements_by_xpath('//*[@class="txt"]')[1]
        ese_myparcles_btn.click()
        time.sleep(5)
Exemple #7
0
def dealCheck(browser):
    js1 = '''Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) '''
    js2 = '''window.navigator.chrome = { runtime: {},  }; '''
    js3 = '''Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] }); '''
    js4 = '''Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], }); '''
    browser.execute_script(js1)
    browser.execute_script(js2)
    browser.execute_script(js3)
    browser.execute_script(js4)
    time.sleep(1)
    while True:
        buttons = browser.find_elements_by_id('nc_1_n1z')
        if len(buttons) > 0:
            print("no!")
            action = ActionChains(browser)
            action.click_and_hold(buttons[0]).perform()
            action.reset_actions()
            action.move_by_offset(320, 0).perform()
            time.sleep(3)
            js1 = '''Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) '''
            js2 = '''window.navigator.chrome = { runtime: {},  }; '''
            js3 = '''Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] }); '''
            js4 = '''Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], }); '''
            browser.execute_script(js1)
            browser.execute_script(js2)
            browser.execute_script(js3)
            browser.execute_script(js4)
        else:
            break
Exemple #8
0
def click_on(x, y, driver):
	xa, ya = get_adjusted_coords(x, y)
	action = ActionChains(driver)
	action.reset_actions()
	action.move_by_offset(xa, ya)
	action.click()
	action.perform()
Exemple #9
0
 def Comun(self):
     action2 = ActionChains(driver)
     WebDriverWait(driver, 120).until(
         EC.visibility_of_element_located((By.XPATH, "//tbody//tr[3]")))
     marcador = driver.find_element_by_class_name("marker-label")
     marcador.click()
     WebDriverWait(driver, 30).until(
         EC.presence_of_all_elements_located(
             (By.XPATH, "//ul[@id='labels']")))
     contratoBox2 = driver.find_element_by_xpath(
         "//ul[@id='labels']//li[contains(text(),'Contrato')]")
     contratoBox2.click()
     filterBox2 = driver.find_element_by_id('filter')
     action2.reset_actions()
     action2.drag_and_drop(contratoBox2, filterBox2).perform()
     comuBox = driver.find_element_by_xpath(
         "//ul[@id='labels']//li[contains(text(),'Comunicação')]")
     filterContratoBox2 = driver.find_element_by_xpath(
         "//ul[@id='filter']//li[1]//a")
     action2.reset_actions()
     action2.drag_and_drop(comuBox, filterContratoBox2).perform()
     close2ndBox = driver.find_element_by_xpath(
         "//ul[@id='filter']//li[2]//a[@href='#']")
     close2ndBox.click()
     time.sleep(2)
     aplicar = driver.find_element_by_xpath(
         "//button[contains(text(),'Aplicar')]")
     aplicar.click()
Exemple #10
0
def login_by_qcode():
    qcode = driver.find_element_by_id("J_QRCodeImg")

    action = ActionChains(driver)
    action.reset_actions()
    action.move_to_element(qcode)
    action.move_by_offset(20, -20).click()
    action.perform()

    while True:
        url = driver.current_url

        if not url.startswith("https://login.taobao.com"):
            cookies = driver.get_cookies()
            res = ""
            for cookie in cookies:
                res += cookie.get('name') + '=' + cookie.get('value') + ';'

            res = res[:-1]
            print(res)
            break

        try:
            refresh = driver.find_element_by_class_name("J_QRCodeRefresh")
            refresh.click()
        except:
            pass

        time.sleep(6)
Exemple #11
0
    def login(self, username='', password=''):
        username = '******'
        password = '******'
        self.brower.get('http://vbooking.ctrip.com/ivbk/accounts/login')

        try:
            self.brower.find_element_by_xpath(
                '//*[@id="loginpanel_container"]/div[1]/div[1]/form/dl[1]/dd/input'
            ).send_keys(username)
            sleep(2)
            self.brower.find_element_by_xpath(
                '//*[@id="loginpanel_container"]/div[1]/div[1]/form/dl[2]/dd/input'
            ).send_keys(password)
            self.brower.execute_script(
                'Object.defineProperties(navigator,{webdriver:{get:() => false}});'
            )
            status = self.brower.execute_script('window.navigator.webdriver')
            sleep(2)
            button = self.brower.find_element_by_xpath(
                '//*[@id="verification-code"]/div[1]/div[2]')
            action = ActionChains(self.brower)
            action.click_and_hold(
                button).perform()  # perform()用来执行ActionChains中存储的行为
            action.reset_actions()
            action.move_by_offset(140, 0).perform()
            sleep(0.2)
            action.move_by_offset(140, 0).perform()

            self.brower.find_element_by_xpath(
                '//*[@id="loginpanel_container"]/div[1]/div[1]/form/button'
            ).click()
            sleep(1)
            # 登录逻辑中保存session
            for cookie in self.brower.get_cookies():
                self.session.cookies.set_cookie(
                    cookielib.Cookie(version=0,
                                     name=cookie['name'],
                                     value=cookie['value'],
                                     port='80',
                                     port_specified=False,
                                     domain=cookie['domain'],
                                     domain_specified=True,
                                     domain_initial_dot=False,
                                     path=cookie['path'],
                                     path_specified=True,
                                     secure=cookie['secure'],
                                     rest={},
                                     expires=cookie['expiry']
                                     if "expiry" in cookie else None,
                                     discard=False,
                                     comment=None,
                                     comment_url=None,
                                     rfc2109=False))

            self.session.cookies.save()
            return True
        except Exception as e:
            print("登录失败", e)
            return False
Exemple #12
0
 def Simulated_sliding(self, element):
     button = self.driver.find_element_by_id(element)  # 找到“蓝色滑块”
     action = ActionChains(self.driver)  # 实例化一个action对象
     action.click_and_hold(
         button).perform()  # perform()用来执行ActionChains中存储的行为
     action.reset_actions()
     action.move_by_offset(260, 0).perform()  # 移动滑块
     Web_test_login.wait_element(self, "class", "nc_iconfont btn_ok")
Exemple #13
0
def test_splider(driver):
    splider = driver.find_element_by_xpath(
        '''(//div//div[@class="el-tooltip el-slider__button"])[last()-5]''')
    action = ActionChains(driver)
    action.drag_and_drop_by_offset(splider, -100, 0).perform()
    time.sleep(2)
    action.reset_actions()
    action.drag_and_drop_by_offset(splider, 100, 0).perform()
Exemple #14
0
 def move_element(self, by, locate):
     element = self.find_element(by,locate)
     actions = ActionChains(BasePage()._driver)
     actions.click_and_hold(element).perform()
     for index in range(200):
         actions.move_by_offset(2,0).perform()
         actions.reset_actions()
         sleep(0.1)
Exemple #15
0
    def get_infos(self):
        list_info = []
        # total_page = self.get_total_page()
        total_page = 30
        for i in range(1,int(total_page)):
            #等待页面商品数据加载完成
            goods_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist > .m-itemlist > .g-clearfix > .items')))

            #获取本页面源代码
            html = self.browser.page_source

            #pq模块解析网页源代码
            doc = pq(html)

            #取出淘宝商品数据
            good_items = doc('.m-itemlist .grid .items .item').items()

            #遍历该页所有的商品
            for item in good_items:
                good_title = item.find('.title').text().replace('\n', "").replace('\r', "")
                good_price = item.find('.price').text().replace('\n','').replace('\r','')
                good_sales_num = item.find('.deal-cnt').text()
                good_shop = item.find('.shop').text()

                #print(str(good_title) + str(good_price) + str(good_sales_num) + str(good_shop))
                list_info.append([good_title,good_price,good_sales_num,good_shop])

            # 模拟向下滑动
            self.swipe_down(2)

            #下一页
            self.next_page(i+1)

            time.sleep(2)

            #等待滑块验证码出现,超时时间为5s,每0.5s检查一下
            #检测是否出现滑块验证,若出现则解决
            #等待滑块加载完成
            #WebDriverWait(self.browser, 5 ,0.5,ignored_exceptions=TimeoutError).until(EC.presence_of_element_located((By.CSS_SELECTOR,'.nc_iconfont')))
            try:
                #打印源码发现滑块源码并没有出现在当前源码中
                print(pq(self.browser.page_source))
                #尝试着切换一下frame到iframe,看一看能不能获得滑块源码
                self.browser.switch_to.frame(self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#J_sufei > iframe'))))

                swipe_button = self.browser.find_element_by_id('nc_1_n1z')
                print(swipe_button)

                action = ActionChains(self.browser)
                action.click_and_hold(swipe_button)#perform用来执行ActionChains中存储的行为
                action.move_by_offset(580,0).perform()#移动滑块
                #action.drag_and_drop_by_offset(swipe_button, 400, 0).perform()
                action.reset_actions()

            except Exception :
                print('get swipe_button failed', Exception)

        return list_info
    def crawl_good_data(self):

        
        
        url="https://curve.taobao.com/search.htm?"

        # 遍历所有页数
        for page in range(1,47):
            furl=url+'pageNo='+str(page)
            
            self.browser.get(furl)
            sleep(5)
            # 等待该页面全部商品数据加载完毕
            
            # 打印当前页
          
            print("当前页数" +str(page))

            # 获取本页面源代码
            html = self.browser.page_source

            # pq模块解析网页源代码
            doc = pq(html)

            # 存储天猫商品数据
            good_items = doc('#J_ShopSearchResult .item').items()

            # 遍历该页的所有商品
            for item in good_items:
                good_title = item.find('.item-name').text().replace('\n',"").replace('\r',"")
                good_status = item.find('.sale-area').text().replace(" ","").replace("笔","").replace('\n',"").replace('\r',"")
                good_price = item.find('.cprice-area').text().replace("¥", "").replace(" ", "").replace('\n', "").replace('\r', "")
                good_url = item.find('.item-name').attr('href')
                print(good_title + "@" + good_status + "@" + good_price + "@" + good_url + '\n')


            # 精髓之处,大部分人被检测为机器人就是因为进一步模拟人工操作
            # 模拟人工向下浏览商品,即进行模拟下滑操作,防止被识别出是机器人
            self.swipe_down(2)


            # 等待滑动验证码出现,超时时间为5秒,每0.5秒检查一次
            # 大部分情况不会出现滑动验证码,所以如果有需要可以注释掉下面的代码
            sleep(5)
#             WebDriverWait(self.browser, 5, 0.5).until(EC.presence_of_element_located((By.ID, "nc_1_n1z"))) #等待滑动拖动控件出现
            try:
                swipe_button = self.browser.find_element_by_id('nc_1_n1z') #获取滑动拖动控件

                #模拟拽托
                action = ActionChains(self.browser) # 实例化一个action对象
                action.click_and_hold(swipe_button).perform() # perform()用来执行ActionChains中存储的行为
                action.reset_actions()
                action.move_by_offset(580, 0).perform() # 移动滑块

            except Exception as e:
                print ('get button failed: ', e)
def normal_drag(dis):
    # 滑块验证   /html/body/div[4]/div/div/div/div[2]/div[3]
    slider = chrome.find_element_by_xpath("/html/body/div[4]/div/div/div/div[2]/div[3]")

    # slider=chrome.find_element_by_class_name(r"JDJRV-slide-inner JDJRV-slide-btn")# 找到“蓝色滑块”
    action = ActionChains(chrome)  # 实例化一个action对象
    action.click_and_hold(slider).perform()  # perform()用来执行ActionChains中存储的行为
    action.reset_actions()
    action.move_by_offset(dis*0.7714, 0).perform()  # 移动滑块
    action.release().perform()
Exemple #18
0
def slide_solution1(slide_btn, driver):
    action = ActionChains(driver)
    action.click_and_hold(slide_btn).perform()
    for i in range(200):
        try:
            action.move_by_offset(i * 2, 0).perform()
        except:
            break
        action.reset_actions()
        time.sleep(0.1)
Exemple #19
0
 def click_move_mouse(self, loc1, img_doc1):
     """
     点击移动鼠标
     :return:
     """
     tab = ActionChains(self.driver)
     hua1 = self.get_element(loc1, img_doc1)  # 获取滑动按钮
     tab.click_and_hold(hua1).perform()
     tab.reset_actions()
     tab.move_by_offset(338, 0).perform()  # 使用随机数确定滑动位置后滑动
Exemple #20
0
def write_title(title):
    title_field = driver.find_element_by_css_selector('.se-placeholder.__se_placeholder.se-ff-nanumgothic.se-fs32')
    action = ActionChains(driver)
    (
        action.move_to_element(title_field)
            .pause(1)
            .click()
            .send_keys(title)
            .perform()
    )
    action.reset_actions()
Exemple #21
0
def test_splider2(driver):
    time.sleep(1)
    splider = driver.find_element_by_xpath('''
    //label[text()="竖向选择"]/../div//div[@class="el-tooltip el-slider__button"]
        ''')
    action = ActionChains(driver)
    action.drag_and_drop_by_offset(splider, 0, 90).perform()
    action.reset_actions()
    time.sleep(2)
    action.drag_and_drop_by_offset(splider, 0, -90).perform()
    action.reset_actions()
Exemple #22
0
def register():
    USER = "******"
    PASSWORD = "******"
    # 用于登陆淘宝,并且保存Cookies
    browser = webdriver.Chrome()
    # 淘宝对selenium的识别主要是通过navigator.webdriver,使用selenium的浏览器api显示的是True,所有我们改成FALSE就可以过淘宝的检测
    browser.execute_script("Object.defineProperties(navigator,{webdriver:{get:() => false}})")
    browser.get('https://login.taobao.com/member/login.jhtml')
    try:
        #browser.switch_to.frame(1)
        wait = WebDriverWait(browser, 10)
        input = wait.until(EC.presence_of_element_located((By.ID, 'J_Quick2Static')))
        input.click() # 切换到密码登陆
    except Exception as e:
        print("直接输入登陆")
    # 切换到支付宝登陆
    # ali = browser.find_element(By.CLASS_NAME, 'alipay-login')
    # ali.click()
    # aliloggoin = browser.find_element(By.CSS_SELECTOR, '#J-loginMethod-tabs > li:nth-child(2)')
    # aliloggoin.click()
    uesr = browser.find_element(By.ID, 'TPL_username_1')  # 账号输入框
    password = browser.find_element(By.ID, 'TPL_password_1')  # 密码输入框
    uesr.send_keys(USER)  # 输入密码
    time.sleep(random.random() * 2)  # 暂停
    password.send_keys(PASSWORD)  # 输入账号
    time.sleep(random.random() * 2)  # 暂停
    try:
        browser.switch_to.frame(browser.find_element(By.ID, '_oid_ifr_'))
        browser.switch_to.default_content()
        # 滑块出现
        loggin = browser.find_element(By.ID, 'nc_1_n1z')
        action = ActionChains(browser)
        action.click_and_hold(loggin).perform()
        action.reset_actions()
        action.move_by_offset(285, 0).perform()  # 输入账号密码后会有一个滑动验证
        time.sleep(random.random() * 1)
    except Exception as e:
        print("滑动滑块")
    button = browser.find_element(By.ID, 'J_SubmitStatic')  # 登录按钮
    button.click()
    time.sleep(random.random() * 2)
    cookie = browser.get_cookies()
    list = {}  # scrapy携带的cookies需要字典类型的
    for cookiez in cookie:
        name = cookiez['name']
        value = cookiez['value']
        list[name] = value
        if len(list) > 10:
            break
    else:
        browser.close()

    return browser, list
Exemple #23
0
    def send_emoji_message(self, emoji, message):
        message_field = self.browser.find_element_by_css_selector(
            self.message_input_selector)
        message_field.clear()
        message_field.click()
        emoji = EmojiAlphabet(emoji)

        # Since we have only uppercase emoji alphabets
        # converting the message to uppercase.
        message = message.upper()

        for m in message:
            emoji_generator = {
                'A': emoji.A,
                'B': emoji.B,
                'C': emoji.C,
                'D': emoji.D,
                'E': emoji.E,
                'F': emoji.F,
                'G': emoji.G,
                'H': emoji.H,
                'I': emoji.I,
                'J': emoji.J,
                'K': emoji.K,
                'L': emoji.L,
                'M': emoji.M,
                'N': emoji.N,
                'O': emoji.O,
                'P': emoji.P,
                'Q': emoji.Q,
                'R': emoji.R,
                'S': emoji.S,
                'T': emoji.T,
                'U': emoji.U,
                'V': emoji.V,
                'W': emoji.W,
                'X': emoji.X,
                'Y': emoji.Y,
                'Z': emoji.Z,
                ' ': emoji.heart,
            }

            emoji_pieces = emoji_generator[m]()
            for e in emoji_pieces:
                # Todo
                # Show percentage of work done/ emojis sent.
                message_field.send_keys(e)
                actions = ActionChains(self.browser)
                actions.key_down(
                    Keys.SHIFT
                ).send_keys(Keys.ENTER).key_up(Keys.SHIFT).perform()
                actions.reset_actions()
            message_field.send_keys(Keys.ENTER)
Exemple #24
0
def login():
    seed_url = 'https://www.taobao.com'
    driver = webdriver.Firefox()
    driver.get(seed_url)
    # 跳转到登录页面
    driver.find_element_by_css_selector('div.site-nav-sign a.h').click()
    time.sleep(1)
    # 切换为'密码登录'
    driver.find_element_by_css_selector('div#J_QRCodeLogin.qrcode-login div.login-links a.forget-pwd.J_Quick2Static').click()
    # input username
    driver.find_element_by_css_selector('input#TPL_username_1').clear()
    driver.find_element_by_css_selector('input#TPL_username_1').send_keys('进入无愁')
    time.sleep(5)
    # input password
    driver.find_element_by_css_selector('input#TPL_password_1').clear()
    driver.find_element_by_css_selector('input#TPL_password_1').send_keys('wo198612')
    time.sleep(3)

    # 点击登录按钮
    driver.find_element_by_css_selector('button#J_SubmitStatic.J_Submit').click()


    driver.find_element_by_css_selector('input#TPL_password_1').clear()
    driver.find_element_by_css_selector('input#TPL_password_1').send_keys('wo198612')

    while True:
        button = driver.find_element_by_id('nc_1_n1z')  # 找到“蓝色滑块”
        time.sleep(1)
        action = ActionChains(driver)  # 实例化一个action对象
        action.click_and_hold(button).perform()  # perform()用来执行ActionChains中存储的行为
        time.sleep(1)
        action.reset_actions()
        action.move_by_offset(258, 0).perform()  # 移动滑块
        time.sleep(5)

        try:
            result_fail = driver.find_element_by_css_selector('div#nocaptcha.nc-container.tb-login div.errloading span.nc-lang-cnt a')
            result_fail.click()
        except NoSuchElementException:
            pass

        try:
            result_success = driver.find_element_by_css_selector('div#nc_1__scale_text.scale_text.nc-align-center.scale_text2 span.nc-lang-cnt b')
            break
        except NoSuchElementException:
            pass


    time.sleep(1)  #等待停顿时间

    driver.find_element_by_css_selector('button#J_SubmitStatic.J_Submit').click()

    print(driver.page_source)
Exemple #25
0
    def process_request(self, request, spider):
        if not self.is_logined:
            # 打开登录页面,实现登录
            self.chrome.get('https://www.qichacha.com/user_login')
            ui.WebDriverWait(self.chrome, 30).until(
                EC.visibility_of_all_elements_located(
                    (By.CLASS_NAME, 'login-panel')))

            self.chrome.find_element_by_css_selector(
                '.login-panel-head div:nth-child(2) a').click()
            self.chrome.find_element_by_id('nameNormal').send_keys(
                '17791692095')
            self.chrome.find_element_by_id('pwdNormal').send_keys('disen666')

            # 处理滑动问题
            slide_span = self.chrome.find_element_by_css_selector(
                '#dom_id_one span')
            slide_div = self.chrome.find_element_by_css_selector('#dom_id_one')

            actions = ActionChains(self.chrome)
            actions.click_and_hold(slide_span).perform()
            actions.reset_actions()

            print(slide_div.rect)
            width = slide_div.rect['width']  # 348
            offset = round(width / 10, 2)
            for cnt in range(1, 11):  # 1,...10
                actions.move_by_offset(offset * cnt, 0).perform()
                time.sleep(0.05)

            actions.reset_actions()

            self.chrome.find_element_by_css_selector('.login-btn').click()

            self.is_logined = True

        time.sleep(10)

        self.chrome.get(request.url)

        if request.url.find('/firm_') == -1:
            ui.WebDriverWait(self.chrome, 30).until(
                EC.visibility_of_all_elements_located(
                    (By.CLASS_NAME, 'pills-after')))
        else:
            ui.WebDriverWait(self.chrome, 30).until(
                EC.visibility_of_all_elements_located((By.ID, 'Cominfo')))

        html = self.chrome.page_source  # str

        return HtmlResponse(request.url,
                            body=html.encode('utf-8'),
                            request=request)
Exemple #26
0
 def move_slider(self, slider, distance):
     distance += 13
     action = ActionChains(self.driver)
     action.click_and_hold(slider).perform()
     action.reset_actions()  # 清除之前的action
     track = self.get_track(distance)
     for i in track:
         action.move_by_offset(xoffset=i, yoffset=0).perform()
         action.reset_actions()
     sleep(0.5)
     action.release().perform()
     sleep(1)
Exemple #27
0
 def _scroll(self, driver, offset):
     '''
     拖动滑块
     :param driver:
     :param offset: 拖动的距离
     :return:
     '''
     button = driver.find_element(*self.scroll_btn)
     action = ActionChains(driver)
     action.click_and_hold(button).perform()
     action.reset_actions()
     action.move_by_offset(offset, 0).perform()
Exemple #28
0
 def slider_check(self, url):
     self._driver.get(self.domain + url)
     time.sleep(3)
     # 滑块处理 nc_1_n1z
     action = ActionChains(self._driver)
     button = self._driver.find_element_by_id('nc_1_n1z')
     action.reset_actions()  # 清除之前的action
     action.click_and_hold(button).perform()
     distance = 300
     track = self._get_track(distance)
     for i in track:
         action.move_by_offset(xoffset=i, yoffset=0)
     action.perform()
Exemple #29
0
    def move_slide(self):
        iframe = self.browser.find_element_by_xpath(
            '//iframe')  # 找到“嵌套”的iframe
        self.browser.switch_to.frame(iframe)  # 切换到iframe
        btn_slide = self.browser.find_element_by_xpath(
            '//span[@class="nc_iconfont btn_slide"]')

        action = ActionChains(self.browser)  # 实例化一个action对象
        action.click_and_hold(
            btn_slide).perform()  # perform()用来执行ActionChains中存储的行为
        action.reset_actions()
        action.move_by_offset(256, 0).perform()  # 移动滑块
        time.sleep(3)
Exemple #30
0
def write_content(content):
    content_field = driver.find_element_by_css_selector('.se-component.se-text.se-l-default')
    content_field.click()

    action = ActionChains(driver)
    (
        action.move_to_element(content_field)
            .pause(1)
            .click()
            .send_keys(content)
            .perform()
    )
    action.reset_actions()