こんにちわ!
私はブラウザーのコンソールをJavascript実行して結果を取得しますが、
その流れをPythonスクリプトで実装しようとしております。
ただし、どうしてもコンソールに出力する結果を取得できませんなので、
ブラウザーのコンソール結果をPython側で取得できるかを確認したいです。
試したのは以下のようになっています。ご参考・指摘などよろしくお願いいたします。
python
1from selenium import webdriver 2from webdriver_manager.chrome import ChromeDriverManager 3import time 4from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 5 6 7proxy = 'xxxx' 8 9options = webdriver.ChromeOptions() 10# options.add_argument('--headless') 11options.add_argument('--disable-gpu') 12options.add_argument('--proxy-server=socks5://' + proxy) 13options.add_argument('--args') 14# options.add_argument('--user-data-dir=custom-profile') 15options.add_argument('--disable-web-security') 16options.add_argument('--disable-site-isolation-trials') 17options.add_argument('--auto-open-devtools-for-tabs') 18d = DesiredCapabilities.CHROME 19 20d['loggingPrefs'] = { 'browser':'ALL' } 21driver = webdriver.Chrome(ChromeDriverManager().install( 22), options=options, desired_capabilities=d) 23url = 'xxxx' 24driver.get(url) 25time.sleep(5) 26results = driver.execute_script(''' 27function aaa() { 28 if (typeof (___grecaptcha_cfg) !== 'undefined') { 29 let cs = [] 30 for (let id in ___grecaptcha_cfg.clients) { 31 cs.push(id) 32 } 33 let res = cs.map(cid => { 34 for (let p in ___grecaptcha_cfg.clients[cid]) { 35 let c = {} 36 cid >= 10000 ? c.version = 'V3' : c.version = 'V2' 37 let path = "___grecaptcha_cfg.clients[" + cid + "]." + p 38 let pp = eval(path) 39 if (typeof pp === 'object') { 40 for (let s in pp) { 41 let subpath = "___grecaptcha_cfg.clients[" + cid + "]." + p + "." + s 42 let sp = eval(subpath) 43 if (sp && typeof sp === 'object' && sp.hasOwnProperty('sitekey') && sp.hasOwnProperty('size')) { 44 c.sitekey = eval(subpath + '.sitekey'); 45 let cb = eval(subpath + '.callback'); 46 if (cb == null) { 47 c.callback = null 48 c.function = null 49 } 50 else { 51 c.callback = subpath + '.callback' 52 cb != c.callback ? c.function = cb : c.function = null 53 } 54 }; 55 }; 56 }; 57 return c 58 }; 59 }); 60 return (res[0].callback) 61 } else { 62 return (null) 63 } 64}; 65''') 66# 上記のJavascriptを取得しようとしておりますが、できますでしょうか。 67print(driver.execute_script('aaa()')) 68# こちらの結果出てこないんです。変数などに代入してもNoneになってしまいます。 69 70#このように試しましたが、期待していたものが表示されなかった。 71# for entry in driver.get_log('browser'): 72# print(entry) 73 74 75time.sleep(10000) 76driver.quit()
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/04 04:19