[PYTHON] Selentrick (Proxy / kopflos)

selenium-logo-150x150.png

Hintergrund

Ein Memo der Ergebnisse bei der Arbeit mit Selen

↓ Einführungsmethode ■ Selenium WebDriver installieren - ausprobieren

Mit Python ist es übrigens möglich, mit einer solchen explosiven Geschwindigkeit zu starten

$ pip install selenium

#Oder
$ conda install selenium

Base

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()

Boot Optionen

Kann im Headless-Modus durch Hinzufügen von --headless gestartet werden

options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

Funktioniert außerhalb der Sandbox durch Hinzufügen von --no-sandbox

options.add_argument('--no-sandbox')
driver = webdriver.Chrome(options=options)

Proxy-Einstellungen

option.add_argument('--proxy-server=http://%s' % PROXY)
option.add_argument('--proxy-auth=%s' % PROXY_AUTH)
driver = webdriver.Chrome(options=options)

Legen Sie fest, dass in einem neuen Fenster geöffnet werden soll, anstatt in einer neuen Registerkarte eines vorhandenen Fensters

options.add_argument('--new-window')
driver = webdriver.Chrome(options=options)

Führen Sie js aus, die mit dem Attribut onclick ausgelöst wurden

Es scheint eine Zeit zu geben, in der das Knopfsystem mit Selen automatisiert ist. Wenn Sie js ausführen möchten, können Sie es wie unten gezeigt direkt ausführen, ohne auf eine Schaltfläche zu klicken.

browser.execute_script('javascript:hogehoge();')

Iframe wechseln

iframe = driver.find_element_by_id('wpnt-notes-iframe2')
#Wechseln Sie zum erfassten Inline-Frame
driver.switch_to.frame(iframe)

Unterschied zwischen Beenden und Beenden

「driver.close()」 Nur die aktive Registerkarte wird geschlossen.

「driver.quit()」 Schließen Sie alle Registerkarten und beenden Sie den Browser.

docker-selenium

Wenn Selen aus einem sauberen Zustand eingebracht wird, ist ein wenig mühsames Verfahren erforderlich. Ich fragte mich, ob es schnell wie ein Hafenarbeiter verwendet werden konnte und fand es.

Ich habe es mit Docker-Selen gesehen

Es scheint, dass VNC verwendet wird, um Chrom darin auszuführen und es dort auszuführen. Das Teilen von Dateien kann mit Docker-Kenntnissen problemlos durchgeführt werden und scheint sehr praktisch zu sein.

Durch Vorbereiten eines Containers für VNC und eines Containers für Browsertests können Sie schnell eine Testumgebung vorbereiten, die von dieser Entwicklungsumgebung getrennt ist.

version: '3.7'

services:
  chrome-server:
    build:
      context: ./chrome
      dockerfile: Dockerfile
    container_name: 'chrome-server'
    hostname: 'chrome-server'
    ports:
      - 9000:5900
      - 4444:4444
    environment:
      - 'TZ=Asia/Tokyo'
      - 'HUB_PORT_4444_TCP_ADDR=hub'
      - 'HUB_PORT_4444_TCP_PORT=4444'
    volumes:
      - ./chrome/downloads:/root/Downloads
  py-server:
    build:
      context: ./py-server
      dockerfile: Dockerfile
     container_name: 'py-server'
     hostname: 'py-server'
     environment:
       - 'TZ=Asia/Tokyo'
     tty: true
     depends_on:
       - chrome-server
     volumes:
       - ./py-server/src:/app/src
       - ./py-server/images:/app/images
     env_file:
       - app.env

Es ist sehr praktisch, dass die Browsertestumgebung mit Docker abgeschlossen wird.

Referenz

Chrome-Boot-Optionen[Python] Bearbeiten Sie den Inhalt von iframe mit SeleniumLassen Sie uns Chrome DevTools beherrschen! Grundlagen des Debuggens mit Browserentwicklungstools, die für die Webentwicklung unerlässlich sind

Recommended Posts

Selentrick (Proxy / kopflos)
Selen
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, Headless Chrome von Selenium zu verwenden