J'avais l'habitude de faire du grattage dans la pratique, c'est donc un mémo du truc que j'ai entré à ce moment-là.
Python3(3.6.2) Selenium Chrome driver(85.0.4183.87)
Vous pouvez utiliser Javascript à partir de Selenium en utilisant la méthode execute_script.
Par exemple, vous pouvez changer la couleur du texte en manipulant la méthode js setAttribute comme indiqué ci-dessous.
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)
Vous pouvez également utiliser cette méthode pour afficher les éléments qui ont display: none;. Par exemple, vous pouvez afficher des éléments masqués en supprimant le nom de la classe à laquelle display: none; est appliqué à partir des éléments masqués.
python
#afficher en classe rapprochée:none;Si est appliqué
element = driver.find_element_by_xpath("//div[@class='hoge close']/span")
driver.execute_script("arguments[0].setAttribute('class','hoge')", element)
Vous avez besoin de ** switch_to_frame () ** pour obtenir les éléments dans ifame.
python
driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='hoge']/iframe"))
Vous pouvez maintenant obtenir les éléments dans ifame disponibles. En revanche, les éléments en dehors de l'iframe ne peuvent pas être obtenus. Par conséquent, si vous voulez obtenir l'élément d'origine, vous devez basculer afin de pouvoir récupérer l'élément d'origine par ** switch_to_default_content () **.
python
driver.switch_to_default_content()
Lors de l'utilisation du sélénium et du grattage, une autre fenêtre peut s'ouvrir après avoir cliqué sur le lien. Si vous souhaitez effectuer une opération sur une autre fenêtre, utilisez ** switch_to_window () ** pour basculer la cible de l'opération vers une autre fenêtre.
python
#Ouvrir une autre fenêtre
driver.find_element_by_xpath("//div[@class='hoge']/a").click()
#Fenêtre ouverte depuis le début
window_before = driver.window_handles[0]
#Fenêtre nouvellement ouverte
window_after = driver.window_handles[1]
#Basculer la cible d'opération du sélénium vers la fenêtre nouvellement affichée
driver.switch_to_window(window_after)
#Basculer la cible d'opération du sélénium vers la fenêtre qui est ouverte depuis le début
driver.switch_to_window(window_before)
python
#Obtenir un élément de bouton radio
element = driver.find_element_by_id(“fugafuga”)
driver.execute_script("arguments[0].click();", element)
Headless Chrome ne semble pas implémenter la fonction de téléchargement de fichiers par défaut du point de vue de la sécurité. Par conséquent, il semble nécessaire de configurer pour permettre le téléchargement de fichiers par communication postale.
python
from selenium import webdriver
DOWNLOAD_URL = "https:www.hogefuga/file/download"
download_dir = "/home/download" #Emplacement des fichiers téléchargés
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