這篇文章主要介紹“python selenium模擬點擊問題怎么解決”,在日常操作中,相信很多人在python selenium模擬點擊問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python selenium模擬點擊問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
#下載包 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb #安裝包,用deb方式安裝 sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb #######################分割############################### #若出現Packet xxx is not installed,代表依賴出現問題執行以下命令 apt-get install -f #重新執行一遍 sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb #######################分割############################## #為了讓其能夠無界面運行 sudo apt-get install xvfb
#首先獲取chromedriver的最新版本信息 LATEST=$(wget -q -O - http://chromedriver.storage.googleapis.com/LATEST_RELEASE) #下載 wget http://chromedriver.storage.googleapis.com/$LATEST/chromedriver_linux64.zip #解壓 unzip chromedriver_linux64.zip #如果沒有安裝unzip就運行 apt install unzip #權限配置 chmod +x chromedriver #移動到bin目錄下 sudo mv chromedriver /usr/bin/
#看自己系統是不是pip3,-i表示用什么源下載 pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
首先創建test.py文件,之后執行python3 test.py,查看效果
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_opt = Options() # 創建參數設置對象.
chrome_opt.add_argument('--headless') # 無界面化.
chrome_opt.add_argument('--disable-gpu') # 配合上面的無界面化.
chrome_opt.add_argument('--window-size=1366,768') # 設置窗口大小, 窗口大小會有影響.
chrome_opt.add_argument("--no-sandbox") #使用沙盒模式運行
# 創建Chrome對象并傳入設置信息.
browser = webdriver.Chrome(chrome_options=chrome_opt)
url = "https://www.baidu.com/"
browser.get(url)
print(browser.page_source)
browser.quit()這里我先用瀏覽器插件的Selenium先點擊好導出python文件進行修改。程序需要創建data.csv文件,并在其中寫入賬號密碼
# Generated by Selenium IDE
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 讀取數據函數
userList = []
def readData():
with open("data.csv","r") as f:
for lines in f.readlines():
data = lines.strip().split(",")
userList.append(data)
# 全局函數
def printLog(info):
print('{0} {1}'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),info))
# 打卡類
class Test:
# 初始化瀏覽器
def __init__(self):
# 添加 Chrome 相關配置
options = webdriver.ChromeOptions()
# 指定設備名稱即可
options.add_experimental_option('mobileEmulation', {'deviceName': 'iPhone X'})
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# options.add_argument('--headless')
self.driver = webdriver.Chrome(chrome_options=options) # => 打開瀏覽器時加入配置
printLog("瀏覽器初始化完成")
# 正式打卡
def signIn(self,username,password):
printLog("正在打開網頁")
self.driver.get("http://stu.zstu.edu.cn/webroot/decision/url/mobile?origin=53fd9573-139e-4e3b-9357-4d791849ad58#/login")
# 睡眠控制速度
# 刷新頁面
self.driver.refresh()
time.sleep(3)
self.driver.set_window_size(800, 824)
self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").click()
self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").send_keys(username)
self.driver.find_element(By.XPATH, "//input[@type=\'password\']").click()
self.driver.find_element(By.XPATH, "//input[@type=\'password\']").send_keys(password)
time.sleep(3)
self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(4)").click()
time.sleep(4)
printLog("登錄成功")
# 尋找打卡功能模塊
self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(2)").click()
time.sleep(2)
printLog("開始打卡")
self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_6 .css-901oao").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[34]/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.CSS_SELECTOR, "#col_4_row_6 > div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[2]/div/div[2]/div/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.CSS_SELECTOR, "#col_5_row_6 > div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[2]/div/div[6]/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_7 .css-1cwyjr8").click()
self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_7 .css-1cwyjr8").send_keys("浙江理工大學")
printLog("打卡進行中")
#選項,不知道為什么css定位不能用
self.driver.find_element(By.XPATH, "//div[10]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[12]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[13]/div/div/div/div/div/div/div[2]").click()
self.driver.find_element(By.XPATH, "//div[17]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[18]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[20]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[21]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[23]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[25]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[26]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[28]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[30]/div/div/div/div/div[2]/div/div").click()
time.sleep(1)
#提交
self.driver.find_element(By.CSS_SELECTOR, "#col_1_row_39").click()
time.sleep(10)
printLog("本次打卡成功")
def quit(self):
self.driver.quit()
printLog("瀏覽器退出")
if __name__ == '__main__':
test = Test()
readData()
for i in range(len(userList)):
try:
test.signIn(userList[i][0],userList[i][1])
except:
printLog("打卡成功或者系統bug,正在進行下一個")
continue
test.quit()
printLog("今日打卡任務完成")
sys.exit()#上傳代碼后,設置定時 crontab -e #打開后添加以下記錄,代表每天3點執行 0 3 * * * /usr/bin/python3 /home/shawn/ezl/sign.py > /home/shawn/ezl/elog.log 2>&1 #重啟 systemctl restart cron.service
上面部分為研究生打開,下面為本科生
# Generated by Selenium IDE
import sys
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 讀取數據函數
userList = []
def readData():
with open("data.csv","r") as f:
for lines in f.readlines():
data = lines.strip().split(",")
userList.append(data)
# 全局函數
def printLog(info):
print('{0} {1}'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),info))
# 打卡類
class Test:
# 初始化瀏覽器
def __init__(self):
# 添加 Chrome 相關配置
options = webdriver.ChromeOptions()
# 指定設備名稱即可
options.add_experimental_option('mobileEmulation', {'deviceName': 'iPhone X'})
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--headless')
self.driver = webdriver.Chrome(chrome_options=options) # => 打開瀏覽器時加入配置
printLog("瀏覽器初始化完成")
# 正式打卡
def signIn(self,username,password):
printLog("正在打開網頁")
self.driver.get("http://stu.zstu.edu.cn/webroot/decision/url/mobile?origin=53fd9573-139e-4e3b-9357-4d791849ad58#/login")
# 睡眠控制速度
# 刷新頁面
self.driver.refresh()
time.sleep(3)
self.driver.set_window_size(800, 824)
self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").click()
self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div/div/div/div/div[2]/div[2]/div[1]/div/input").send_keys(username)
self.driver.find_element(By.XPATH, "//input[@type=\'password\']").click()
self.driver.find_element(By.XPATH, "//input[@type=\'password\']").send_keys(password)
time.sleep(3)
self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(4)").click()
time.sleep(4)
printLog("登錄成功")
# 尋找打卡功能模塊
# self.driver.find_element(By.CSS_SELECTOR,".r-1loqt21:nth-child(2)").click()
self.driver.find_element(By.XPATH, "//*[@id='app']/div/div[1]/div/div/div/div[1]/div/div/div/div/div/div[1]/div/div/div/div[2]/div/div/div[3]/div/div/div[5]/div/div/div[3]").click()
time.sleep(5)
printLog("開始打卡")
# self.driver.find_element(By.CSS_SELECTOR, "#col_3_row_6 .css-901oao").click()
self.driver.find_element(By.XPATH, "//*[@id='col_1_row_11']/span").click()
time.sleep(5)
self.driver.find_element(By.XPATH, "//div[2]/div/div/div/div/div/div/div/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[34]/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[2]/div/div/div/div/div/div/div/div/div/div[2]/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[2]/div/div[2]/div/div/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[3]/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//div[6]/div/div/div/div").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//input").click()
time.sleep(1)
self.driver.find_element(By.XPATH, "//input").send_keys("浙江理工大學")
time.sleep(1)
printLog("打卡進行中")
#選項,不知道為什么css定位不能用
self.driver.find_element(By.XPATH, "//div[11]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[13]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[14]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[18]/div/div/div/div/div/div/div[2]").click()
self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[19]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[20]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[21]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[22]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[24]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[26]/div/div/div/div/div/div/div").click()
self.driver.find_element(By.XPATH, "//div[27]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[29]/div/div/div/div/div[2]/div/div").click()
self.driver.find_element(By.XPATH, "//div[31]/div/div/div/div/div[2]/div/div").click()
time.sleep(1)
#提交
self.driver.find_element(By.XPATH, "//*[@id='col_0_row_40']/div/div/div/div").click()
# self.driver.find_element(By.CSS_SELECTOR, "#col_0_row_40 .r-1loqt21 > .css-1dbjc4n").click()
time.sleep(10)
printLog("本次打卡成功")
def quit(self):
self.driver.quit()
printLog("瀏覽器退出")
if __name__ == '__main__':
test = Test()
readData()
for i in range(len(userList)):
try:
test.signIn(userList[i][0],userList[i][1])
except:
printLog("打卡成功或者系統bug,正在進行下一個")
continue
test.quit()
printLog("今日打卡任務完成")
sys.exit()到此,關于“python selenium模擬點擊問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。