|
IEの場合は、xxx=IEGETSRC(IE, "BODY") として、HtmlのBodyを変数に入れることができますが、 FirefoxでBodyを変数に入れるには、どのようにしたらBodyを変数に入れることができるのでしょうか? Firefoxで「右クリック」→「ページのソースを表示」とすると別タブが開いてしまいます。 宜しくお願い致します。
|
No.4439 2017/09/18(Mon) 11:38:41
|
☆ Re: FirefoxでBodyを変数に入れる方法 / satocha |
|
|
seleniumbasicを使えば、firefox,chrome,Edgeなどいろいろ動かせると思います。 http://florentbr.github.io/SeleniumBasic/ UWSCからの利用法については、当掲示板の師匠衆のどなたかがブログに書かれていたような記憶が…。
外部ツールを使わずにということなら、少し強引ですが下のようなやり方もあります。ffのウインドウを取得する関数は手抜きで、手作業でアクティブにしてねというつくりですので、適宜改良してください。エラー処理もしていないので、何回かやらないとbodyの取得ができないかもしれません。firefoxのアドレスバーをいじっていますが、元には戻していません。
foxid=getFoxId() js=replace( JsSource, "<#CR>", "" ) js="(function(){" + js + "})()" limit=gettime() + 10 sendJsToFox( foxid, js ) repeat succeeded =false subwin =getid("SubWindow - Mozilla Firefox","MozillaWindowClass") if status( subwin, st_isid ) succeeded =true break endif if gettime() > limit break endif until false if succeeded ctrlwin( subwin, activate ) kbd( vk_ctrl, down ) kbd( vk_a ) kbd( vk_c ) kbd( vk_ctrl, up ) ctrlwin( subwin, close ) body ="bodyが取れました<#cr><#cr>" + getstr(0) print body sleep(1) else msgbox( "失敗" ) endif ctrlwin( foxid, activate ) kbd( vk_alt, down ) kbd( vk_d ) kbd( vk_alt, up ) kbd( vk_back ) exitexit textblock JsSource var bh=document.body.outerHTML; bh=bh.replace(/</g,'<'); bh=bh.replace(/>/g,'>'); var w=window.open( '','dmy', 'height=600,width=600' ); w.document.write( '<pre>' ); w.document.write( bh ); w.document.write( '</pre>' ); w.document.title='SubWindow'; endtextblock
function getFoxId() fukidasi( "3秒以内にFireFoxをクリックしてアクティブにしてください" ) sleep(3) fukidasi("") result=getid( Get_Active_Win ) fend
procedure sendJsToFox( foxid, jsStr ) ctrlwin( foxid, activate ) kbd( vk_alt, down ) kbd( vk_d ) kbd( vk_alt, up ) typestr( "javascript" ) sendstr( foxid, ":" + jsStr ) typestr( "#" ) fend
procedure typeStr( str, speed=5 ) //$でシフトを押しながら、#でリターン、 len = length( str ) const aaa = asc("a") - asc("A") flag = false
for i = 1 to len t = copy( str, i, 1 ) code = asc( t )
if asc("A") <= code and code <= asc("Z") flag = true endif if asc("a") <= code AND code <= asc("z") code = code - aaa endif
select code case asc("/") code = VK_OEM_2 case asc("'") flag = true code = VK_7 case asc(" ") code = VK_SPACE case asc(".") code = VK_OEM_PERIOD case asc(",") code = VK_OEM_COMMA case asc("-") code = VK_OEM_MINUS case asc("#") code = VK_RETURN case asc("_") flag = true code = VK_OEM_5 case asc("$") flag = true Continue case asc("↑") code = VK_UP case asc("↓") code = VK_DOWN case asc("→") code = VK_RIGHT case asc("←") code = VK_LEFT selend
if flag = true KBD(VK_SHIFT,DOWN,speed) endif KBD(code,CLICK, RANDOM(speed)+2) if flag = true KBD(VK_SHIFT,UP,speed) endif flag = false next fend
|
No.4441 2017/09/19(Tue) 06:25:18
|
|
☆ Re: FirefoxでBodyを変数に入れる方法 / あほ |
|
|
satocha様 どうも有り難うございます。 キーボードによる手法しかないようですね、師匠様たちのブログも探してみたいと思います。 有り難うございました。
|
No.4444 2017/09/19(Tue) 17:13:29
|
|
☆ Re: FirefoxでBodyを変数に入れる方法 / satocha |
|
|
この掲示板の仕様なのかどうか。ソースが化けていました。
bh=bh.replace(/</g,'<'); と次の行 bh=bh.replace(/>/g,'>'); のシングルクオートで囲った部分は不等号ではなく、それぞれ「&lt;」「&gt;」を半角にした文字列です。
|
No.4445 2017/09/20(Wed) 07:01:26
|
|