[PYTHON] sélénium: attendre l'élément avec ET / OU

Est-ce correct?

Serveur CSS

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


class ByCss(object):
    def __init__(self, *args, **kwargs):
        self.meet_all = kwargs.get('meet_all', False)
        self.ecs = [
            EC.presence_of_element_located((By.CSS_SELECTOR, i)) for i in args]

    def __call__(self, driver):
        if self.meet_all:
            return all([fn(driver) for fn in self.ecs])
        else:
            for fn in self.ecs:
                try:
                    if fn(driver): return True
                except:
                    pass

    @classmethod
    def wait(cls, driver, *args, **kwargs):
        seconds = kwargs.get('seconds', 10)
        WebDriverWait(driver, seconds).until(cls(*args, **kwargs))
        return [driver.find_elements_by_css_selector(i) for i in args]

échantillon

from selenium import webdriver
br = webdriver.Safari()
login_portal(br)
def login_portal(br):
    usr_name_css = 'form[name="auth"] input[name="usr_name"]'
    usr_password_css = 'form[name="auth"] input[name="usr_password"]'

    usr_name, usr_password = ByCss.wait(
        br, usr_name_css, usr_password_css, meet_all=True)

    usr_name[0].send_keys(USER)
    usr_password[0].send_keys(PASSWORD)

    submit_css = 'form[name=auth] input[type=submit]'
    br.find_elements_by_css_selector(submit_css)[0].click()

Recommended Posts

sélénium: attendre l'élément avec ET / OU
Grattage avec Python, Selenium et Chromedriver
Obtenir le code HTML de l'élément avec du sélénium Python
Pratiquer le web scraping avec Python et Selenium
Tracez des graphiques en noir et blanc adaptés aux papiers avec matplotlib ou pylab
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Attendez qu'une autre fenêtre s'ouvre dans Selenium
Raisonnement causal et recherche causale par Python (pour les débutants)
Essayez d'exécuter Google Chrome avec Python et Selenium
phantomjs et sélénium
Installez pip et pandas avec Ubuntu ou VScode
Grattage avec du sélénium
Commençant par Selenium
Faites glisser et déposez un fichier local avec Selenium (Python)
Installez le sélénium sur votre Mac et essayez-le avec python
Suivi automatique sur Twitter avec python et sélénium! (RPA)
Automatisez Chrome avec Python et Selenium sur votre Chromebook
Module complémentaire Firefox qui copie les spécifications des éléments pour Selenium WebDriver
J'ai essayé un RPA simple pour me connecter avec du sélénium
Traduisez automatiquement DeepL en anglais avec Python et Selenium
Installez tweepy avec pip et utilisez-le pour l'API 1.1
Modèle pour Bottle lors du déploiement avec Github et Bitbucket
Grattage réussi avec Selenium
ScreenShot avec Selenium (édition Python)
Recherche d'un moyen unifié d'attendre et d'obtenir les changements d'état de Selenium pour les éléments Python
Grattage avec du sélénium [Python]
3D ou D avec Py
Avec et sans WSGI
Procédure d'installation pour Python et Ansible avec une version spécifique
Analysez les actions avec python et recherchez des phases de trading favorables
LaTeX confortable avec sous-système Windows pour Linux et VS Code
4 techniques de création de diagrammes pour papiers et supports de présentation avec matplotlib
Bibliothèque pour spécifier un serveur de noms en python et dig
Comparaison des performances entre le calcul matriciel bidimensionnel et pour avec numpy
Créez des circuits AND / OR / NAND / XOR avec FPGA qui peuvent être nécessaires pour le Deep Learning avec Polyphony