LoginSignup
4
3

More than 5 years have passed since last update.

Seleniumとsocket通信を使って,遠隔のPCに指定のWebページを表示する.

Posted at

この記事が役に立つ人

何らかの理由でモニターが接続されていない機器から,プロジェクターなどで,画像やWebページを簡単に表示したい人.

必要な環境

  • 問題の機器と同じサブネットに接続できるChromeがインストールされているPC
  • PCにSeleniumのWebDriverをインストールする.
  • PCに,pythonとseleniumモジュールがインストールされていること.seleniumはpipでインストール可能.
  • PCのFirewallに,使用するport番号で,サブネットの中から,inboundできるよう設定する.

私は,Windows10のPCで実行しましたが,おそらく,Macでも可能と思います.インストールでは,次のページを参考にさせていただきました.

【windows7】pythonでChromeのブラウザ操作を自動化  ~Selenium WebDriverを利用

表示するPC上の処理

次のPython(2.7)のプログラムを起動しておきます.ソケットを開けて,urlの文字列を受信し,WebDriverに渡すだけです.
ここでは,ポート番号は5000番を使っています.

runchrome.py
import socket
from time import sleep

from selenium import webdriver
browser = webdriver.Chrome('C:\selenium\chromedriver')

s = socket.socket()

port = 5000
s.bind(('', port))

while True:
    print('listening')
    s.listen(5)
    c, addr = s.accept()
    print('receiving')
    inurl = c.recv(4096)
    print('input:' + inurl)
    if inurl != '':
        browser.get(inurl)
    c.send(inurl)
    c.close()
s.close()

表示を指示する機器上の処理

ソケットを開けて,表示するurlの文字列を送信するだけです.
どの言語でも良いですが,私はpythonで書きました.python2.7です.

dispUrl.py
    def dispUrl(p):
        ipv = xx.xx.xx.xx
        portv = 5000

        s.connect(ipv,portv)
        s.send(p)
        s.recv(4096)
        s.close()

        return

補足

一応,受信した文字列を返信して,双方向にしていますが,場合によってはここは直した方が良いかもしれません.
sleepを入れなくても,私の環境では動きましたが,必要な場合もあるかもしれません.
余計なソフトを入れたくない人に役に立てば幸いです.

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3