csdn自動チェックイン

csdn自動サインインアプレット

1つは、python + seleniumの開発

Tanstyより

githubアドレス:https : //github.com/Tansty/CSDN-signup

gitteアドレス:https ://gitee.com/tansty/CSDN-signup




1.ログインページ

(1)まず公式サイトに入る

ここに画像の説明を挿入




(2)クリックしてログイン
ここに画像の説明を挿入



2.ログイン操作を実行する

(1)まず、ログインするにはアカウントのパスワードをクリックする必要があります
ここに画像の説明を挿入

要素を見つけるためのステートメントを作成する

driver.find_element_by_link_text("账号密码登录").click()


(2)ユーザー名とパスワードを入力します

ここに画像の説明を挿入




(3)要素を確認する

ユーザー名:

ここに画像の説明を挿入

パスワード:

ここに画像の説明を挿入

対応するステートメントを作成し、CSSセレクターを使用して選択します

driver.find_element_by_css_selector("[placeholder='手机号/邮箱/用户名']").send_keys(user)
driver.find_element_by_css_selector("[placeholder='密码']").send_keys(password)

入力成功




(4)ログインボタンをクリック

ここに画像の説明を挿入

driver.find_element_by_css_selector("button").click()

入力するにはクリックしてください

ここに画像の説明を挿入



3.チェックイン操作を実行する

(1)ここでは、アバターをクリックするとパーソナルセンターにジャンプし、新しいWebページにアクセスする機能を直接構築することがわかります。

new_window='window.open("{}")'.format("https://i.csdn.net/#/uc/profile")#js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)

入力に成功しました

ここに画像の説明を挿入




(2)サインインページにジャンプします

ここでは、各ボタンのWebリンクが異なるため、直接jsを使用して新しいWebページにジャンプします

new_window = 'window.open("{}")'.format("https://i.csdn.net/#/uc/reward")  # js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)


(3)サインインを完了する

ここに画像の説明を挿入
ここに画像の説明を挿入

実験後、サインインと完了したサインインのクラス属性が異なることが判明しました

チェックインされていません:handle_box to_sign
チェックインが完了しました:handle_box has_signを描画
できます:handle_box to_reward
構築コード

		try:
            elem=driver.find_element_by_xpath("//div[@class='handle_box has_sign']")
        except:
            print("您有可能还未签到或可以抽奖")
        else:
            messagebox.showinfo("错误", "您已经签到过了")
            driver.quit()
            sys.exit(1)
        #如果已经完成签到就退出

        try:
            elem=driver.find_element_by_xpath("//div[@class='handle_box to_reward']")
        except:
            print("您还未签到")
        else:
            messagebox.showinfo("恭喜", "您可以去抽奖了")
            driver.quit()
            sys.exit(1)

        #提示可以抽奖
        try:
            elem=driver.find_element_by_xpath("//div[@class='handle_box to_sign']")
        except:
            messagebox.showinfo("错误", "没有找到对应的元素")
            driver.quit()
            sys.exit(1)
        else:
            elem.click()

正常にサインイン



2.対応する知識ポイントの要約

1.要素の選択方法

find_element_by_class_name:クラスに従って検索

find_element_by_css_selector:CSSによると

find_element_by_id:IDに従って検索

find_element_by_link_text:リンクのテキストに従って検索します

find_element_by_name:ノード名に基づいて検索

find_element_by_partial_link_text:テキスト全体に含まれている限り、リンクのテキストに従って検索します

find_element_by_tag_name:タグで検索

find_element_by_xpath:Xpathを使用して検索します

PS:要素を要素に変更すると、すべての適格な要素が検索され、リストが返されます

比如:find_elements_by_class_name

返されるのはweb_elementオブジェクトです



2.ブラウザウィンドウの切り替え

ブラウザーウィンドウを切り替えて新しいWebページにジャンプする必要がある場合、それ以外の場合は元のWebページを検索し、エラーを報告します

for handle in driver.window_handles:
    driver.switch_to.window(handle)
    if "个人" in driver.title:
        break

元に戻る

# mainWindow变量保存当前窗口的句柄

mainWindow = wd.current_window_handle

現在のWebページのハンドルを保存して、後で戻ることができるようにします



3. jsステートメントの実行

new_window = 'window.open({}")'.format("https://i.csdn.net/#/uc/reward")  # js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)

4.tkinter

このプロジェクトで採用された方法:

 def set_init_window(self):
        self.init_window_name.title("CSDN自动签到")  #标题
        self.init_window_name.geometry()   #设置窗口大小,设置窗口位置
        self.init_label=Label(self.init_window_name,text="账号: ")
        self.init_label.grid()#x=0,y=0
        self.user=Entry(self.init_window_name)   #创建输入框
        self.user.grid(row=0,column=1)
        self.init_label2=Label(self.init_window_name,text="密码: ")
        self.init_label2.grid(row=1,column=0)
        self.password=Entry(self.init_window_name)
        self.password.grid(row=1,column=1)
        self.w=Button(text="签到", bg="lightblue", width=10,command=self.driver)
        self.w.grid()

tkライブラリの具体的な使用:tkinter


著作権に関する声明:この記事はブロガーのオリジナルの記事であり、CC 4.0 BY-SAの著作権契約に従います。転載するには、元のソースリンクとこの声明を添付してください。この記事へのリンク:https://blog.csdn.net/tansty_zh/article/details/108081090

おすすめ

転載: blog.csdn.net/tansty_zh/article/details/108081090