Résolvez le problème selon lequel il est impossible de cliquer sur les éléments dans Selenium. Selemium utilise le code JS driver.execute_script pour cliquer sur les éléments.

@FindBy(how = How.XPATH, using = "//*[text()='A1. Approved']") 
private WebElement approuvé ;

driver.execute_script("arguments[0].click();",Approuvé)


Ce que cette phrase signifie, c'est utiliser JavaScript pour effectuer une opération de clic dans le navigateur et cliquer sur l'élément de page « supportUser ».

Plus précisément, "driver.execute_script" est une méthode qui appelle le pilote du navigateur (pilote), qui peut être utilisé pour exécuter du code JavaScript dans le navigateur. "arguments[0].click()" est un morceau de code JavaScript, qui consiste à appeler la méthode "click" du premier paramètre (c'est-à-dire "supportUser"), afin que vous puissiez cliquer sur cet élément dans le navigateur.

En général, la fonction de cette phrase est d'effectuer automatiquement des opérations de clic dans le navigateur via le pilote du navigateur.

Si le code signale une erreur : selenium.common.exceptions.InvalidArgumentException : Message : argument non valide

Cela peut être dû à la manière dont les éléments interagissent ou à la conception particulière de la page. Afin de résoudre ce problème,
nous pouvons essayer les trois solutions suivantes : simuler les opérations de la souris, simuler les opérations du clavier et opérer via JavaScript.

1. Simulez les opérations de la souris

Lorsqu'il est impossible de cliquer sur un élément via la méthode click, nous pouvons simuler les opérations de la souris via la classe ActionChains de Selenium.

Étapes de l'opération :
# 1. Importez la classe ActionChinas
depuis selenium.webdriver import ActionChains
# 2. Instanciez l'objet ActionChinas
actions = ActionChains(driver)
# 3. Effectuez des opérations avec la souris, telles que cliquer sur l'élément
actions.click(ele).perform ()

Optimisation du code

importer l'heure
depuis Selenium importer webdriver
depuis pywinauto.keyboard importer send_keys
# 1. Importer la classe ActionChinas
depuis selenium.webdriver importer ActionChains
essayer :
    dr = webdriver.Chrome()
    dr.get("https://www.baidu.com")
    dr .implicitly_wait(5)
    dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
    ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/ input[@type="file"]')
    # 2. Instanciez l'objet ActionChinas
    actions = ActionChains(dr)
    # 3. Effectuez des opérations avec la souris, comme cliquer sur l'élément
    actions.click(ele).perform()
    time.sleep (3)
    send_keys(keys=r'D:\api_test.jpg')
    send_keys(keys='{ENTER}')
    time.sleep(30)
sauf exception comme e :
    augmenter e
enfin :
    dr.quit()
    
2. Simuler le fonctionnement du clavier

Si l'élément ne peut pas être cliqué avec la souris, nous pouvons essayer d'utiliser des opérations au clavier pour déclencher l'événement correspondant. Les étapes spécifiques sont les suivantes :

Forfait guide

à partir de selenium.webdriver.common.keys import Keys
envoie des touches de clavier spécifiques sur l'élément

element.send_keys(Keys.ENTER)# Simuler la touche Entrée

3. Fonctionnement via js


Si les éléments ne peuvent pas être cliqués via les opérations de la souris et du clavier, nous pouvons essayer d'utiliser JavaScript pour manipuler directement les éléments de la page. Les étapes spécifiques sont les suivantes :

Utilisez la méthode execute_script pour exécuter le code js

driver.execute_script("arguments[0].click();", element)
Optimisation du code de recherche d'images Baidu

importer l'heure
depuis Selenium importer webdriver
depuis pywinauto.keyboard importer send_keys
# 1. Importer la classe ActionChinas
depuis selenium.webdriver importer ActionChains
essayer :
    dr = webdriver.Chrome()
    dr.get("https://www.baidu.com")
    dr .implicitly_wait(5)
    dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
    ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/ input[@type="file"]')
    # #Utilisez execte_script pour cliquer. Parce qu'il est impossible de cliquer sur
    dr.execute_script("arguments[0].click();",ele) via click()
    actions.click(ele).perform()
    time.sleep(3)
    send_keys(keys=r' D:\api_test.

    time.sleep(30)
sauf exception comme e :
    augmenter e
enfin :
    dr.quit()

Je suppose que tu aimes

Origine blog.csdn.net/qq_30273575/article/details/133134313
conseillé
Classement