haha
This commit is contained in:
59
scroll_and_greet.py
Normal file
59
scroll_and_greet.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""按姓名找到求职人 → 滚动到该人 → 点击打招呼(DrissionPage,三个动作)"""
|
||||
import time
|
||||
|
||||
# 求职人姓名
|
||||
姓名 = "王先生"
|
||||
|
||||
|
||||
def do_greet(page, 姓名, container=None):
|
||||
"""三个动作:1. 找到姓名 2. 滚动到那里 3. 点击打招呼"""
|
||||
if container is None:
|
||||
try:
|
||||
container = page.get_frame("recommendFrame")
|
||||
except Exception:
|
||||
container = page
|
||||
|
||||
# 1. 找到这个姓名
|
||||
name_ele = container.ele(f'x://span[contains(text(),"{姓名}")]', timeout=10)
|
||||
if not name_ele:
|
||||
name_ele = container.ele(f'x://span[text()="{姓名}"]', timeout=2)
|
||||
if not name_ele:
|
||||
raise Exception(f"未找到姓名:{姓名}")
|
||||
|
||||
# 2. 滚动到那里
|
||||
name_ele.run_js("this.scrollIntoView({block: 'center', behavior: 'auto'})")
|
||||
time.sleep(0.8)
|
||||
|
||||
# 3. 点击打招呼(先在该人所在卡片内找)
|
||||
parent = name_ele.parent()
|
||||
greet_btn = None
|
||||
for _ in range(8):
|
||||
if not parent:
|
||||
break
|
||||
greet_btn = parent.ele('x://span[text()="打招呼"]', timeout=0.5) or parent.ele('x://*[contains(text(),"打招呼")]', timeout=0.5)
|
||||
if greet_btn:
|
||||
break
|
||||
parent = parent.parent()
|
||||
if not greet_btn:
|
||||
greet_btn = container.ele('x://span[text()="打招呼"]', timeout=2) or container.ele('x://*[contains(text(),"打招呼")]', timeout=1)
|
||||
if not greet_btn:
|
||||
raise Exception("未找到「打招呼」按钮")
|
||||
greet_btn.click(by_js=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
from pathlib import Path
|
||||
_root = Path(__file__).resolve().parent
|
||||
if str(_root) not in sys.path:
|
||||
sys.path.insert(0, str(_root))
|
||||
from worker.bit_browser import BitBrowserAPI
|
||||
from DrissionPage import ChromiumPage, ChromiumOptions
|
||||
|
||||
bit_api = BitBrowserAPI("http://127.0.0.1:54345")
|
||||
cdp_addr, port, browser_id = bit_api.open_browser(browser_id=None, name="测试2", remark=None)
|
||||
page = ChromiumPage(addr_or_opts=ChromiumOptions().set_local_port(port=port))
|
||||
page.get("https://www.zhipin.com/web/geek/recommend")
|
||||
time.sleep(2)
|
||||
do_greet(page, 姓名)
|
||||
Reference in New Issue
Block a user