Python+Selenium執行JavaScript,控制滾動條移動
阿新 • • 發佈:2018-12-21
執行js指令碼來控制瀏覽器豎向滾動條:
開啟百度貼吧,然後拖動滾動條到左側 “地區"
# coding=utf-8 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("https://tieba.baidu.com/index.html") time.sleep(1) target_elem = driver.find_element_by_link_text("地區") driver.execute_script("return arguments[0].scrollIntoView();",target_elem) # 用目標元素參考去拖動 #driver.execute_script("scroll(0,2400)") # 這個是第二種方法,比較粗劣,大概的拖動
本人在新增cbs滿減活動的時候用到:
思路就是:首先能獲取當前彈框中產品的總數量,然後每獲取一個產品就以目標元素為參考去拖動滾動條,這樣既能全部獲取也能按照產品順序裝進列表中:
# 選擇iframe driver.switch_to.frame(0) time.sleep(2) cbs_all_product = [] # 獲取該商家下cbs裡的所有產品element物件,看不到也能獲取到,只是結果是空,總數是正確的 all_product_element = driver.find_elements_by_xpath('//*[@id="scroll1"]/table/tbody/tr/td[2]') # 獲取所有產品的長度,因為還需要滾動條滾動,所以後面的資料是看不到的 length = len(all_product_element) time.sleep(3) # 通過獲取總產品數,每獲取一個產品就以目標元素為參考去拖動滾動條 for j in range(1, length + 1): product_element = driver.find_element_by_xpath( '//*[@id="scroll1"]/table/tbody/tr[' + str(j) + ']/td[2]') cbs_all_product.append(product_element.text) time.sleep(2) driver.execute_script("return arguments[0].scrollIntoView();", product_element) print(cbs_all_product)