python:selenium

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python:selenium [2020/06/12 08:34] ともやんpython:selenium [2022/06/01 04:35] (現在) – [DietPi の chromium-driver] ともやん
行 1: 行 1:
-<html> 
-  <style> 
-    #result pre, #mincode pre { 
-      overflow: hidden; 
-      font-size: 10px; 
-    } 
-    #result_long pre { 
-      height: 400px; 
-      overflow: scroll; 
-      overflow-x: hidden; 
-      font-size: 10px; 
-    } 
-    #mintbl table { 
-      font-size: 12px; 
-    } 
-    .dokuwiki .plugin_wrap table { 
-      width: auto; 
-    } 
-    #logo { 
-      background-color: white; 
-      padding: 10px; 
-      width: fit-content; 
-    } 
-    #logo p { 
-      margin: 0; 
-    } 
-  </style> 
-</html> 
 ====== Selenium ====== ====== Selenium ======
 +{{python:selenium_logo.png?400|Selenium Logo}}\\
 +本家: [[https://www.selenium.dev/|SeleniumHQ Browser Automation]]\\
 +ドキュメント: [[https://www.selenium.dev/documentation/ja/|Seleniumブラウザー自動化プロジェクト :: Seleniumドキュメント]]\\
 +ソースコード: [[https://github.com/SeleniumHQ/selenium|GitHub - SeleniumHQ/selenium: A browser automation framework and ecosystem.]]\\
 +
 +**Selenium** は、 Webアプリケーションをテストするためのポータブルフレームワークである。 Selenium は、テストスクリプト言語(Selenium IDE)を学ぶ必要なしに、機能テストを作成するための再生ツールを提供する。また、C#、Groovy、Java、Perl、PHP、Python、Ruby、Scala 等の一般的なプログラミング言語でテストを作成するためのテストドメイン固有言語(Selenese)も提供する。その後、テストはほとんどの最新のWebブラウザに対して実行できる。Selenium は、Windows、Linux、およびmacOSで動作する。これは、Apache License 2.0 の下でリリースされたオープンソースソフトウェアである。
 +[[wpjp>Selenium_(ソフトウェア)|Selenium (ソフトウェア) - Wikipedia]] より\\
  
 ===== ChromeDriver のインストール ===== ===== ChromeDriver のインストール =====
 +本家: [[https://chromedriver.chromium.org|ChromeDriver - WebDriver for Chrome]]\\
 +
 +==== Fedora ====
 <code> <code>
 $ sudo dnf install chromedriver $ sudo dnf install chromedriver
行 183: 行 165:
 </WRAP> </WRAP>
  
-==== 動作確認 ====+=== 動作確認 ===
 <code> <code>
 $ chromedriver --version $ chromedriver --version
行 189: 行 171:
 <WRAP prewrap 100% #result> <WRAP prewrap 100% #result>
 <code> <code>
-ChromeDriver 80.0.3987.163 (e7fbe071abe9328cdce4ffedac9822435fbd3656-refs/branch-heads/3987@{#1037})+ChromeDriver 100.0.4896.127 (ff0d0695743e65305d7194f9bd309e5e1c824aa0-refs/branch-heads/4896_88@{#4})
 </code> </code>
 </WRAP> </WRAP>
行 212: 行 194:
   --url-base                      base URL path prefix for commands, e.g. wd/url   --url-base                      base URL path prefix for commands, e.g. wd/url
   --readable-timestamp            add readable timestamps to log   --readable-timestamp            add readable timestamps to log
 +  --enable-chrome-logs            show logs from the browser (overrides other logging options)
   --disable-dev-shm-usage         do not use /dev/shm (add this switch if seeing errors related to shared memory)   --disable-dev-shm-usage         do not use /dev/shm (add this switch if seeing errors related to shared memory)
-  --whitelisted-ips               comma-separated whitelist of remote IP addresses which are allowed to connect to ChromeDriver+  --allowed-ips=LIST              comma-separated allowlist of remote IP addresses which are allowed to connect to ChromeDriver 
 +  --allowed-origins=LIST          comma-separated allowlist of request origins which are allowed to connect to ChromeDriver. Using `*` to allow any host origin is dangerous!
 </code> </code>
 </WRAP> </WRAP>
 +
 +==== DietPi ====
 +
 +=== DietPi で chromedriver を含むパッケージ ===
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ apt-file search chromedriver
 +</code></WRAP>
 +<WRAP color_result><code>
 +chromium-browser: /usr/lib/chromium-browser/chromedriver.debug
 +chromium-browser: /usr/lib/chromium-browser/chromedriver.unstripped
 +chromium-chromedriver: /usr/bin/chromedriver
 +chromium-chromedriver: /usr/lib/chromium-browser/chromedriver
 +chromium-chromedriver: /usr/share/doc/chromium-chromedriver/changelog.Debian.gz
 +chromium-chromedriver: /usr/share/doc/chromium-chromedriver/copyright
 +chromium-chromedriver-dbgsym: /usr/share/doc/chromium-chromedriver-dbgsym
 +chromium-driver: /usr/bin/chromedriver
 +ruby-chromedriver-helper: /usr/share/doc/ruby-chromedriver-helper/README.md.gz
 +ruby-chromedriver-helper: /usr/share/doc/ruby-chromedriver-helper/changelog.Debian.gz
 +ruby-chromedriver-helper: /usr/share/doc/ruby-chromedriver-helper/changelog.gz
 +ruby-chromedriver-helper: /usr/share/doc/ruby-chromedriver-helper/copyright
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/bin/chromedriver-helper
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/bin/chromedriver-update
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/concourse/chromedriver-helper.yml
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/concourse/tasks/rake-test/run.ps1
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/concourse/tasks/rake-test/run.sh
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/lib/chromedriver-helper.rb
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/lib/chromedriver/helper.rb
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/lib/chromedriver/helper/google_code_parser.rb
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/gems/chromedriver-helper-2.1.0/lib/chromedriver/helper/version.rb
 +ruby-chromedriver-helper: /usr/share/rubygems-integration/all/specifications/chromedriver-helper-2.1.0.gemspec
 +wolfram-engine: /opt/Wolfram/WolframEngine/13.0/SystemFiles/Components/WebUnit/Resources/DriverBinaries/ChromeDriver/Linux-ARM/chromedriver
 +</code></WRAP>
 +</WRAP>
 +
 +=== DietPi の chromium-browser の chromium-chromedriver は動作する🤔ややこしい😅💦 ===
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ sudo apt install chromium-chromedriver
 +</code></WRAP>
 +<WRAP color_result><code>
 +Reading package lists... Done
 +Building dependency tree... Done
 +Reading state information... Done
 +The following additional packages will be installed:
 +  chromium-browser
 +Recommended packages:
 +  chromium-browser-l10n
 +The following NEW packages will be installed:
 +  chromium-browser chromium-chromedriver
 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 +Need to get 130 MB of archives.
 +After this operation, 409 MB of additional disk space will be used.
 +Do you want to continue? [Y/n] y
 +Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf chromium-browser armhf 101.0.4951.57-rpt2 [125 MB]
 +Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf chromium-chromedriver armhf 101.0.4951.57-rpt2 [5,165 kB]
 +Fetched 130 MB in 2min 47s (779 kB/s)
 +debconf: delaying package configuration, since apt-utils is not installed
 +Selecting previously unselected package chromium-browser.
 +(Reading database ... 70998 files and directories currently installed.)
 +Preparing to unpack .../chromium-browser_101.0.4951.57-rpt2_armhf.deb ...
 +Unpacking chromium-browser (101.0.4951.57-rpt2) ...
 +Selecting previously unselected package chromium-chromedriver.
 +Preparing to unpack .../chromium-chromedriver_101.0.4951.57-rpt2_armhf.deb ...
 +Unpacking chromium-chromedriver (101.0.4951.57-rpt2) ...
 +Setting up chromium-browser (101.0.4951.57-rpt2) ...
 +update-alternatives: using /usr/bin/chromium-browser to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
 +update-alternatives: using /usr/bin/chromium-browser to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode
 +Setting up chromium-chromedriver (101.0.4951.57-rpt2) ...
 +Processing triggers for hicolor-icon-theme (0.17-2) ...
 +Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...
 +Processing triggers for mailcap (3.69) ...
 +</code></WRAP>
 +</WRAP>
 +
 +=== 動作確認 ===
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ chromedriver --version
 +</code></WRAP>
 +<WRAP color_result><code>
 +ChromeDriver 101.0.4951.57 (352920124de66f14c4af140139f61c798937eda9-refs/branch-heads/4951@{#1148})
 +</code></WRAP>
 +</WRAP>
 +
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ chromedriver --help
 +</code></WRAP>
 +<WRAP color_result><code>
 +Usage: chromedriver [OPTIONS]
 +
 +Options
 +  --port=PORT                     port to listen on
 +  --adb-port=PORT                 adb server port
 +  --log-path=FILE                 write server log to file instead of stderr, increases log level to INFO
 +  --log-level=LEVEL               set log level: ALL, DEBUG, INFO, WARNING, SEVERE, OFF
 +  --verbose                       log verbosely (equivalent to --log-level=ALL)
 +  --silent                        log nothing (equivalent to --log-level=OFF)
 +  --append-log                    append log file instead of rewriting
 +  --replayable                    (experimental) log verbosely and don't truncate long strings so that the log can be replayed.
 +  --version                       print the version number and exit
 +  --url-base                      base URL path prefix for commands, e.g. wd/url
 +  --readable-timestamp            add readable timestamps to log
 +  --enable-chrome-logs            show logs from the browser (overrides other logging options)
 +  --disable-dev-shm-usage         do not use /dev/shm (add this switch if seeing errors related to shared memory)
 +  --allowed-ips=LIST              comma-separated allowlist of remote IP addresses which are allowed to connect to ChromeDriver
 +  --allowed-origins=LIST          comma-separated allowlist of request origins which are allowed to connect to ChromeDriver. Using `*` to allow any host origin is dangerous!
 +</code></WRAP>
 +</WRAP>
 +
 +=== DietPi の chromium-driver は Segmentation fault で動作しない😅💦 ===
 +Raspberry Pi Zero WH の DietPi で armhf 32bit な chromium-driver は Segmentation fault で動作しない😥\\
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ sudo apt install chromium-driver
 +</code></WRAP>
 +<WRAP color_result_long><code>
 +Reading package lists... Done
 +Building dependency tree... Done
 +Reading state information... Done
 +The following additional packages will be installed:
 +  chromium chromium-common libjsoncpp24 libminizip1 libre2-9
 +Suggested packages:
 +  chromium-l10n chromium-shell
 +Recommended packages:
 +  chromium-sandbox libu2f-udev fonts-liberation notification-daemon system-config-printer
 +The following NEW packages will be installed:
 +  chromium chromium-common chromium-driver libjsoncpp24 libminizip1 libre2-9
 +0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
 +Need to get 66.9 MB of archives.
 +After this operation, 158 MB of additional disk space will be used.
 +Do you want to continue? [Y/n] y
 +Get:1 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian bullseye/main armhf libjsoncpp24 armhf 1.9.4-4 [67.0 kB]
 +Get:2 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libminizip1 armhf 1.1-8+b1 [18.3 kB]
 +Get:3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libre2-9 armhf 20210201+dfsg-1 [138 kB]
 +Get:4 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf chromium-common armhf 101.0.4951.64-1~deb11u1+rpi1 [4,748 kB]
 +Get:5 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf chromium armhf 101.0.4951.64-1~deb11u1+rpi1 [56.8 MB]
 +Get:6 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf chromium-driver armhf 101.0.4951.64-1~deb11u1+rpi1 [5,128 kB]
 +Fetched 66.9 MB in 1min 54s (587 kB/s)
 +debconf: delaying package configuration, since apt-utils is not installed
 +Selecting previously unselected package libjsoncpp24:armhf.
 +(Reading database ... 70989 files and directories currently installed.)
 +Preparing to unpack .../0-libjsoncpp24_1.9.4-4_armhf.deb ...
 +Unpacking libjsoncpp24:armhf (1.9.4-4) ...
 +Selecting previously unselected package libminizip1:armhf.
 +Preparing to unpack .../1-libminizip1_1.1-8+b1_armhf.deb ...
 +Unpacking libminizip1:armhf (1.1-8+b1) ...
 +Selecting previously unselected package libre2-9:armhf.
 +Preparing to unpack .../2-libre2-9_20210201+dfsg-1_armhf.deb ...
 +Unpacking libre2-9:armhf (20210201+dfsg-1) ...
 +Selecting previously unselected package chromium-common.
 +Preparing to unpack .../3-chromium-common_101.0.4951.64-1~deb11u1+rpi1_armhf.deb ...
 +Unpacking chromium-common (101.0.4951.64-1~deb11u1+rpi1) ...
 +Selecting previously unselected package chromium.
 +Preparing to unpack .../4-chromium_101.0.4951.64-1~deb11u1+rpi1_armhf.deb ...
 +Unpacking chromium (101.0.4951.64-1~deb11u1+rpi1) ...
 +Selecting previously unselected package chromium-driver.
 +Preparing to unpack .../5-chromium-driver_101.0.4951.64-1~deb11u1+rpi1_armhf.deb ...
 +Unpacking chromium-driver (101.0.4951.64-1~deb11u1+rpi1) ...
 +Setting up libre2-9:armhf (20210201+dfsg-1) ...
 +Setting up libminizip1:armhf (1.1-8+b1) ...
 +Setting up libjsoncpp24:armhf (1.9.4-4) ...
 +Setting up chromium-common (101.0.4951.64-1~deb11u1+rpi1) ...
 +Setting up chromium (101.0.4951.64-1~deb11u1+rpi1) ...
 +update-alternatives: using /usr/bin/chromium to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode
 +Setting up chromium-driver (101.0.4951.64-1~deb11u1+rpi1) ...
 +Processing triggers for mailcap (3.69) ...
 +Processing triggers for hicolor-icon-theme (0.17-2) ...
 +Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...
 +</code></WRAP>
 +</WRAP>
 +
 +=== 動作確認 ===
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ chromedriver --version
 +</code></WRAP>
 +<WRAP colot_result><code>
 +Segmentation fault😱
 +</code></WRAP>
 +</WRAP>
 +
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ strace /usr/bin/chromedriver
 +</code></WRAP>
 +<WRAP color_result_long><code>
 +execve("/usr/bin/chromedriver", ["/usr/bin/chromedriver"], 0xbedeecd0 /* 20 vars */) = 0
 +brk(NULL)                               = 0x2081000
 +uname({sysname="Linux", nodename="dietpi-001", ...}) = 0
 +access("/etc/ld.so.preload", R_OK)      = 0
 +openat(AT_FDCWD, "/etc/ld.so.preload", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
 +mmap2(NULL, 54, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6ff4000
 +close(3)                                = 0
 +readlink("/proc/self/exe", "/usr/bin/chromedriver", 4096) = 21
 +openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libarmmem-v6l.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\3\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=9512, ...}) = 0
 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff2000
 +mmap2(NULL, 73772, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6fb0000
 +mprotect(0xb6fb2000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6fc1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6fc1000
 +close(3)                                = 0
 +munmap(0xb6ff4000, 54)                  = 0
 +openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=64107, ...}) = 0
 +mmap2(NULL, 64107, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6fa0000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libatomic.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(\25\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=30152, ...}) = 0
 +mmap2(NULL, 98456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f87000
 +mprotect(0xb6f8e000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6f9d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0xb6f9d000
 +mmap2(0xb6f9f000, 152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f9f000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\330\v\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=13864, ...}) = 0
 +mmap2(NULL, 78020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f73000
 +mprotect(0xb6f76000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6f85000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0xb6f85000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0t]\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0755, st_size=137364, ...}) = 0
 +mmap2(NULL, 176728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f47000
 +mprotect(0xb6f5f000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6f6f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0xb6f6f000
 +mmap2(0xb6f71000, 4696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f71000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libglib-2.0.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0pp\1\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=1124708, ...}) = 0
 +mmap2(NULL, 1190680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e24000
 +mprotect(0xb6f35000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6f45000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x111000) = 0xb6f45000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libnss3.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\085\1\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=1174820, ...}) = 0
 +mmap2(NULL, 1242288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cf4000
 +mprotect(0xb6e0e000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6e1e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11a000) = 0xb6e1e000
 +mmap2(0xb6e23000, 1200, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e23000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libnssutil3.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\300m\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=145636, ...}) = 0
 +mmap2(NULL, 211324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cc0000
 +mprotect(0xb6ce0000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6cef000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0xb6cef000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libnspr4.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\330\202\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=192612, ...}) = 0
 +mmap2(NULL, 264252, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c7f000
 +mprotect(0xb6cac000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6cbc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2d000) = 0xb6cbc000
 +mmap2(0xb6cbe000, 6204, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6cbe000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libevent-2.1.so.7", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(\260\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=308816, ...}) = 0
 +mmap2(NULL, 374476, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c23000
 +mprotect(0xb6c6d000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6c7d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4a000) = 0xb6c7d000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libz.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0@\32\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=95880, ...}) = 0
 +mmap2(NULL, 159980, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6bfb000
 +mprotect(0xb6c12000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6c21000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0xb6c21000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libminizip.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\220\26\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=38412, ...}) = 0
 +mmap2(NULL, 102676, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6be1000
 +mprotect(0xb6bea000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6bf9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0xb6bf9000
 +close(3)                                = 0
 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff0000
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libxcb.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0T\232\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=132940, ...}) = 0
 +mmap2(NULL, 197204, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6bb0000
 +mprotect(0xb6bd0000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6bdf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0xb6bdf000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libre2.so.9", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000M\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=378984, ...}) = 0
 +mmap2(NULL, 443072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b43000
 +mprotect(0xb6b9d000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6bad000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5a000) = 0xb6bad000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libstdc++.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0X\216\7\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=1532776, ...}) = 0
 +mmap2(NULL, 1605012, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb69bb000
 +mprotect(0xb6b2a000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6b3a000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16f000) = 0xb6b3a000
 +mmap2(0xb6b41000, 7572, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6b41000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\20\222\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=386572, ...}) = 0
 +mmap2(NULL, 450684, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb694c000
 +mprotect(0xb69aa000, 61440, PROT_NONE)  = 0
 +mmap2(0xb69b9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5d000) = 0xb69b9000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libgcc_s.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\270\321\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=116324, ...}) = 0
 +mmap2(NULL, 180532, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb691f000
 +mprotect(0xb693b000, 61440, PROT_NONE)  = 0
 +mmap2(0xb694a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0xb694a000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\255\1\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0755, st_size=1321488, ...}) = 0
 +mmap2(NULL, 1390760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb67cb000
 +mprotect(0xb690a000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6919000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e000) = 0xb6919000
 +mmap2(0xb691d000, 6312, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb691d000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libpcre.so.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\16\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=419152, ...}) = 0
 +mmap2(NULL, 483412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6754000
 +mprotect(0xb67ba000, 61440, PROT_NONE)  = 0
 +mmap2(0xb67c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x65000) = 0xb67c9000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libplc4.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0l\r\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=13792, ...}) = 0
 +mmap2(NULL, 78060, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6740000
 +mprotect(0xb6743000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6752000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0xb6752000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libplds4.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\334\t\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=9656, ...}) = 0
 +mmap2(NULL, 73916, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb672d000
 +mprotect(0xb672f000, 61440, PROT_NONE)  = 0
 +mmap2(0xb673e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb673e000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libXau.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\4\t\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=9628, ...}) = 0
 +mmap2(NULL, 73900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb671a000
 +mprotect(0xb671c000, 61440, PROT_NONE)  = 0
 +mmap2(0xb672b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb672b000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libXdmcp.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\10\17\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=17852, ...}) = 0
 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fee000
 +mmap2(NULL, 82072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6705000
 +mprotect(0xb6709000, 61440, PROT_NONE)  = 0
 +mmap2(0xb6718000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xb6718000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libbsd.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240/\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=71172, ...}) = 0
 +mmap2(NULL, 138468, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb66e3000
 +mprotect(0xb66f3000, 65536, PROT_NONE)  = 0
 +mmap2(0xb6703000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0xb6703000
 +close(3)                                = 0
 +openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libmd.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
 +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\200\24\0\0004\0\0\0"..., 512) = 512
 +fstat64(3, {st_mode=S_IFREG|0644, st_size=42544, ...}) = 0
 +mmap2(NULL, 106696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb66c8000
 +mprotect(0xb66d1000, 65536, PROT_NONE)  = 0
 +mmap2(0xb66e1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0xb66e1000
 +close(3)                                = 0
 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fec000
 +set_tls(0xb6fecd40)                     = 0
 +mprotect(0xb6919000, 8192, PROT_READ)   = 0
 +mprotect(0xb66e1000, 4096, PROT_READ)   = 0
 +mprotect(0xb6f85000, 4096, PROT_READ)   = 0
 +mprotect(0xb6703000, 4096, PROT_READ)   = 0
 +mprotect(0xb6718000, 4096, PROT_READ)   = 0
 +mprotect(0xb672b000, 4096, PROT_READ)   = 0
 +mprotect(0xb6f6f000, 4096, PROT_READ)   = 0
 +mprotect(0xb6cbc000, 4096, PROT_READ)   = 0
 +mprotect(0xb673e000, 4096, PROT_READ)   = 0
 +mprotect(0xb6752000, 4096, PROT_READ)   = 0
 +mprotect(0xb67c9000, 4096, PROT_READ)   = 0
 +mprotect(0xb694a000, 4096, PROT_READ)   = 0
 +mprotect(0xb69b9000, 4096, PROT_READ)   = 0
 +mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fea000
 +mprotect(0xb6b3a000, 20480, PROT_READ)  = 0
 +mprotect(0xb6bad000, 8192, PROT_READ)   = 0
 +mprotect(0xb6bdf000, 4096, PROT_READ)   = 0
 +mprotect(0xb6c21000, 4096, PROT_READ)   = 0
 +mprotect(0xb6bf9000, 4096, PROT_READ)   = 0
 +mprotect(0xb6c7d000, 4096, PROT_READ)   = 0
 +mprotect(0xb6cef000, 16384, PROT_READ)  = 0
 +mprotect(0xb6e1e000, 12288, PROT_READ)  = 0
 +mprotect(0xb6f45000, 4096, PROT_READ)   = 0
 +mprotect(0xb6f9d000, 4096, PROT_READ)   = 0
 +mprotect(0xb6fc1000, 4096, PROT_READ)   = 0
 +mprotect(0xe04000, 163840, PROT_READ)   = 0
 +mprotect(0xb6ff5000, 4096, PROT_READ)   = 0
 +munmap(0xb6fa0000, 64107)               = 0
 +set_tid_address(0xb6fec8e8)             = 16341
 +set_robust_list(0xb6fec8f0, 12)         = 0
 +rt_sigaction(SIGRTMIN, {sa_handler=0xb6f4c6a8, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0xb67fddb0}, NULL, 8) = 0
 +rt_sigaction(SIGRT_1, {sa_handler=0xb6f4c764, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0xb67fddb0}, NULL, 8) = 0
 +rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
 +ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
 +--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
 ++++ killed by SIGSEGV +++
 +Segmentation fault😱😭
 +</code></WRAP>
 +</WRAP>
 +参考: [[git>ungoogled-software/ungoogled-chromium/issues/1409|Raspberry Pi Zero W (architecture: armv6l) Segmentation Fault · Issue #1409 · ungoogled-software/ungoogled-chromium]]\\
 +
 +さようなら👋\\
 +<WRAP color_term>
 +<WRAP color_command><code>
 +$ sudo apt remove chromium-driver
 +$ sudo apt autoremove
 +</code></WRAP>
 +<WRAP colot_result><code>
 +</code></WRAP>
 +</WRAP>
 +
 +==== Windows ====
 +[[windows:scoop|Scoop]] によるインストール。\\
 +<WRAP prewrap 100%>
 +<code powershell>
 +$ scoop install chromedriver
 +</code>
 +</WRAP>
 +<WRAP color_result><html><pre>
 +Installing 'chromedriver' (102.0.5005.61) [64bit]
 +chromedriver_win32.zip (6.1 MB) [=============================================================================] 100%
 +Checking hash of <b class=CYN>chromedriver_win32.zip</b> ... <b class=GRN>ok.</b>
 +Extracting <b class=CYN>chromedriver_win32.zip</b> ... <b class=GRN>done.</b>
 +Linking ~\scoop\apps\chromedriver\current => ~\scoop\apps\chromedriver\102.0.5005.61
 +Creating shim for 'chromedriver'.
 +<b class=GRN>'chromedriver' (102.0.5005.61) was installed successfully!</b>
 +</pre></html></WRAP>
 +
 +=== 動作確認 ===
 +<code>
 +$ chromedriver --version
 +</code>
 +<WRAP prewrap 100% #result>
 +<code>
 +ChromeDriver 102.0.5005.61 (0e59bcc00cc4985ce39ad31c150065f159d95ad3-refs/branch-heads/5005@{#819})
 +</code>
 +</WRAP>
 +
 +<code>
 +$ chromedriver --help
 +</code>
 +<WRAP prewrap 100% #result>
 +<code>
 +Usage: C:\Users\tomoyan\scoop\apps\chromedriver\current\chromedriver.exe [OPTIONS]
 +
 +Options
 +  --port=PORT                     port to listen on
 +  --adb-port=PORT                 adb server port
 +  --log-path=FILE                 write server log to file instead of stderr, increases log level to INFO
 +  --log-level=LEVEL               set log level: ALL, DEBUG, INFO, WARNING, SEVERE, OFF
 +  --verbose                       log verbosely (equivalent to --log-level=ALL)
 +  --silent                        log nothing (equivalent to --log-level=OFF)
 +  --append-log                    append log file instead of rewriting
 +  --replayable                    (experimental) log verbosely and don't truncate long strings so that the log can be replayed.
 +  --version                       print the version number and exit
 +  --url-base                      base URL path prefix for commands, e.g. wd/url
 +  --readable-timestamp            add readable timestamps to log
 +  --enable-chrome-logs            show logs from the browser (overrides other logging options)
 +  --allowed-ips=LIST              comma-separated allowlist of remote IP addresses which are allowed to connect to ChromeDriver
 +  --allowed-origins=LIST          comma-separated allowlist of request origins which are allowed to connect to ChromeDriver. Using `*` to allow any host origin is dangerous!
 +</code>
 +</WRAP>
 +
 +===== Selenium のインストール =====
 +<code>
 +$ pip install selenium
 +</code>
 +<WRAP prewrap 100% #result>
 +<code>
 +Collecting selenium
 +  Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB)
 +     |████████████████████████████████| 904 kB 1.1 MB/s
 +Collecting urllib3
 +  Downloading urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
 +     |████████████████████████████████| 127 kB 3.3 MB/s
 +Installing collected packages: urllib3, selenium
 +Successfully installed selenium-3.141.0 urllib3-1.25.10
 +</code>
 +</WRAP>
 +
 +===== 参考文献 =====
 +[[http://ssb22.user.srcf.net/adjuster/|Web Adjuster (domain-rewriting Web customiser)]]\\
  
  • python/selenium.1591918444.txt.gz
  • 最終更新: 2020/06/12 08:34
  • by ともやん