Resuelva el problema de que no se puede hacer clic en los elementos en Selenium. Selemium usa el código JS driver.execute_script para hacer clic en los elementos.

@FindBy(how = How.XPATH, usando = "//*[text()='A1. Approved']") 
Private WebElement Aprobado;

driver.execute_script("argumentos[0].click();",Aprobado)


Lo que significa esta oración es usar JavaScript para realizar una operación de clic en el navegador y hacer clic en el elemento de la página "supportUser".

Específicamente, "driver.execute_script" es un método que llama al controlador del navegador y se puede utilizar para ejecutar código JavaScript en el navegador. "argumentos[0].click()" es un fragmento de código JavaScript, lo que significa llamar al método "clic" del primer parámetro (es decir, "supportUser"), para que pueda hacer clic en este elemento en el navegador.

En general, la función de esta oración es realizar automáticamente operaciones de clic en el navegador a través del controlador del navegador.

Si el código informa un error: selenium.common.exceptions.InvalidArgumentException: Mensaje: argumento no válido

Esto puede deberse a la forma en que interactúan los elementos o al diseño especial de la página. Para resolver este problema,
podemos probar las siguientes tres soluciones: simular operaciones del mouse, simular operaciones del teclado y operar a través de JavaScript.

1. Simular operaciones del mouse

Cuando no se puede hacer clic en un elemento mediante el método de clic, podemos simular las operaciones del mouse a través de la clase ActionChains de Selenium.

Pasos de la operación:
# 1. Importar la clase ActionChinas
desde selenium.webdriver importar ActionChains
# 2. Crear una instancia del objeto ActionChinas
acciones = ActionChains(driver)
# 3. Realizar operaciones con el mouse, como hacer clic en el elemento
action.click(ele).perform ()

Optimización de código

importar tiempo
desde selenio importar webdriver
desde pywinauto.keyboard importar send_keys
# 1. Importar la clase ActionChinas
desde selenium.webdriver importar ActionChains
prueba:
    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. Crear una instancia del objeto ActionChinas
    acciones = ActionChains(dr)
    # 3. Realizar operaciones con el mouse, como hacer clic en el elemento
    action.click(ele).perform()
    time.sleep (3)
    enviar_claves(claves=r'D:\api_test.jpg')
    send_keys(keys='{ENTER}')
    tiempo.sleep(30)
excepto Excepción como e:
    elevar e
finalmente:
    dr.quit()
    
2. Simular la operación del teclado

Si no se puede hacer clic en el elemento con el mouse, podemos intentar utilizar las operaciones del teclado para activar el evento correspondiente. Los pasos específicos son los siguientes:

Paquete de guía

desde selenium.webdriver.common.keys import Keys
envía teclas de teclado específicas en el elemento

element.send_keys(Keys.ENTER)# Simular la tecla Enter

3. Operación a través de js


Si no se puede hacer clic en los elementos mediante operaciones del mouse y el teclado, podemos intentar usar JavaScript para manipular directamente los elementos de la página. Los pasos específicos son los siguientes:

Utilice el método ejecutar_script para ejecutar código js

driver.execute_script("argumentos[0].click();", elemento)
Optimización del código de búsqueda de imágenes de Baidu

importar tiempo
desde selenio importar webdriver
desde pywinauto.keyboard importar send_keys
# 1. Importar la clase ActionChinas
desde selenium.webdriver importar ActionChains
prueba:
    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"]')
    # #Utilice execte_script para hacer clic. Porque es imposible hacer clic en
    dr.execute_script("arguments[0].click();",ele) mediante click()
    action.click(ele).perform()
    time.sleep(3)
    send_keys(keys=r' D:\api_test.

    time.sleep(30)
excepto Excepción como e:
    elevar e
finalmente:
    dr.quit()

Supongo que te gusta

Origin blog.csdn.net/qq_30273575/article/details/133134313
Recomendado
Clasificación