测试 selenium 附加到浏览器

This commit is contained in:
shikong 2024-03-02 03:21:47 +08:00
parent ae9739f746
commit c3c1e6ccc4
3 changed files with 71 additions and 32 deletions

61
main.py
View File

@ -1,38 +1,35 @@
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
import run
import utils
if __name__ == '__main__':
options = webdriver.ChromeOptions()
options.add_argument('lang=zh-CN')
options.add_argument(
'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36')
# options.add_argument('--user-data-dir=./UserData/Google/Chrome/Default')
options.add_argument('--disable-gpu') # 如果不加这个选项,有时定位会出现问题
# options.add_argument('--headless') # 增加无界面选项
options = webdriver.ChromeOptions()
options.add_argument('lang=zh-CN')
options.add_argument(
'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36')
# options.add_argument('--user-data-dir=./UserData/Google/Chrome/Default')
options.add_argument('--disable-gpu') # 如果不加这个选项,有时定位会出现问题
# options.add_argument('--headless') # 增加无界面选项
service = webdriver.ChromeService(r"./driver/chromedriver.exe")
driver = webdriver.Chrome(service=service,options=options)
# driver.maximize_window()
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
# "source": """
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# """
# })
try:
with open("./stealth.min.js") as f:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": f.read()
})
service = webdriver.ChromeService(r"./driver/chromedriver.exe")
driver = webdriver.Chrome(service=service,options=options)
driver.maximize_window()
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
# "source": """
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# """
# })
with open("./stealth.min.js") as f:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": f.read()
})
driver.get("https://bot.sannysoft.com/")
time.sleep(5)
width = driver.execute_script("return document.documentElement.scrollWidth")
height = driver.execute_script("return document.documentElement.scrollHeight")
print(width, height)
utils.screenshot(driver=driver, save_path="./screenshot.png")
driver.set_window_size(width, height)
driver.save_screenshot('result.png')
time.sleep(30)
run.run(driver=driver)
time.sleep(5)
finally:
driver.quit()

27
main_subprocess.py Normal file
View File

@ -0,0 +1,27 @@
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import run
import utils
# 通过 已打开的浏览器 附加 selenium
if __name__ == '__main__':
subprocess.Popen([
"C:\Program Files\Google\Chrome\Application\chrome.exe",
# "--disable-gpu",
"--remote-debugging-port=9222",
r'--user-data-dir=E:\Repository\skcks.cn\python-selenium-spider\tmp\UserData'])
# service = webdriver.ChromeService(r"./driver/chromedriver.exe")
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)
try:
run.run(driver=driver)
time.sleep(5)
finally:
driver.close()
driver.quit()

15
run/__init__.py Normal file
View File

@ -0,0 +1,15 @@
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
from selenium.webdriver.remote.webdriver import WebDriver
import utils
def run(driver:WebDriver):
driver.set_window_size(1920, 1080)
driver.get("https://bot.sannysoft.com/")
width = driver.execute_script("return document.documentElement.scrollWidth")
height = driver.execute_script("return document.documentElement.scrollHeight")
print(width, height)
utils.screenshot(driver=driver, save_path="./screenshot.png")