Früher habe ich in der Praxis geschabt, daher ist dies ein Memo des Tricks, den ich damals eingegeben habe.
Python3(3.6.2) Selenium Chrome driver(85.0.4183.87)
Sie können Javascript von Selenium aus mit der Methode execute_script ausführen.
Sie können beispielsweise die Textfarbe ändern, indem Sie die Methode js setAttribute wie unten gezeigt bearbeiten.
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.hogefuga")
element = driver.find_element_by_xpath("//div[@class='fuga']/span")
driver.execute_script("arguments[0].setAttribute('style','color: red;')", element)
Sie können diese Methode auch verwenden, um Elemente anzuzeigen, die angezeigt werden: keine; Das ausgeblendete Element kann beispielsweise angezeigt werden, indem der Klassenname gelöscht wird, auf den display: none; aus dem ausgeblendeten Element angewendet wird.
python
#Anzeige in enger Klasse:none;Wenn angewendet wird
element = driver.find_element_by_xpath("//div[@class='hoge close']/span")
driver.execute_script("arguments[0].setAttribute('class','hoge')", element)
Sie benötigen ** switch_to_frame () **, um die Elemente in ifame zu erhalten.
python
driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='hoge']/iframe"))
Jetzt können Sie die Elemente in ifame verfügbar machen. Andererseits können Elemente außerhalb des Iframes nicht erhalten werden. Wenn Sie das ursprüngliche Element abrufen möchten, müssen Sie daher wechseln, damit Sie das ursprüngliche Element über ** switch_to_default_content () ** wieder abrufen können.
python
driver.switch_to_default_content()
Beim Betrieb von Selen und beim Schaben wird möglicherweise ein anderes Fenster geöffnet, nachdem Sie auf den Link geklickt haben. Wenn Sie eine Operation in einem anderen Fenster ausführen möchten, verwenden Sie ** switch_to_window () **, um das Operationsziel in ein anderes Fenster zu wechseln.
python
#Öffne ein anderes Fenster
driver.find_element_by_xpath("//div[@class='hoge']/a").click()
#Fenster, das von Anfang an geöffnet ist
window_before = driver.window_handles[0]
#Neu geöffnetes Fenster
window_after = driver.window_handles[1]
#Schalten Sie das Betriebsziel von Selen auf das neu angezeigte Fenster
driver.switch_to_window(window_after)
#Schalten Sie das Betriebsziel von Selen auf das von Anfang an geöffnete Fenster
driver.switch_to_window(window_before)
python
#Optionsfeldelement abrufen
element = driver.find_element_by_id(“fugafuga”)
driver.execute_script("arguments[0].click();", element)
Headless Chrome scheint die Datei-Download-Funktion aus Sicherheitsgründen nicht standardmäßig zu implementieren. Daher scheint es notwendig zu sein, das Herunterladen von Dateien per Post-Kommunikation zuzulassen.
python
from selenium import webdriver
DOWNLOAD_URL = "https:www.hogefuga/file/download"
download_dir = "/home/download" #Speicherort der heruntergeladenen Dateien
def enable_download(driver, download_dir):
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
driver.execute("send_command", params)
def setting_chrome_options():
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
return chrome_options;
driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver",options=setting_chrome_options())
enable_download(driver, download_dir)
driver.get(DOWNLOAD_URL)
Recommended Posts