Scripts comunes para pruebas automáticas de selenio

1. Controlar el navegador que ha abierto la página (iniciar sesión)

1. Breve descripción:

Durante la ejecución automatizada, algunas operaciones de la página requieren que el usuario inicie sesión para acceder. Si necesita iniciar sesión nuevamente e ingresar el código de verificación de SMS cada vez que ejecuta el script de automatización, no es propicio para la operación rápida de la automatización. Por lo tanto, se necesitan scripts de automatización y los navegadores correspondientes a las páginas abiertas deben controlarse para realizar operaciones automatizadas.

2. Pasos generales de operación:

1> Ejecutar cmd, iniciar el navegador

2> Inicie sesión manualmente en el navegador abierto

3> Ejecute el script de python, controle el navegador abierto y luego realice las operaciones posteriores

3. Operación específica:

1) Primero ejecute el siguiente código en el modo cmd de Windows, o guárdelo como un script .bat y haga clic para ejecutar;

Después de ejecutarse con éxito, se iniciará el navegador y se abrirá una pestaña

secuencia de comandos start_chrome.bat:

cd /d C:\Users\nikey\AppData\Local\Google\Chrome\Application

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
pause
  • C:\Usuarios\nikey\AppData\Local\Google\Chrome\Aplicación

        Cambie a su directorio de instalación local de Chrome

  • puerto-depuración-remoto=9222

       Número de puerto especificado (se usará en secuencias de comandos de python posteriores, es necesario especificar un número de puerto desocupado)         

  • user-data-dir="C:\selenum\AutomationProfile"

        El archivo de configuración especificado en tiempo de ejecución de la automatización, para que el archivo de configuración predeterminado del usuario no se sobrescriba.

2) Al especificar el número de puerto, controlar el navegador abierto

from selenium import webdriver
import time

# 控制已经打开的浏览器,端口号使用cmd运行时指定的端口号
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
bro = webdriver.Chrome(options=chrome_options)
bro.maximize_window()

# 访问一个网页
url = 'https://www.baidu.com/'
bro.get(url)
time.sleep(1)

2. Operaciones relacionadas con el navegador

1. Después de que el script de automatización termine de ejecutarse, el navegador no se cerrará automáticamente

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)  #不自动关闭浏览器
options.add_argument('--start-maximized')#浏览器窗口最大化
bro = webdriver.Chrome(options=options)
bro.get('https://www.baidu.com')

2. Cierre la pestaña del navegador y salga del navegador.

from selenium import webdriver

# 启动浏览器, 打开百度页面
bro = webdriver.Chrome()
url = 'https://www.baidu.com/'
bro.get(url)

# 关闭当前标签页
bro.close()

# 退出浏览器
bro.quit()

3. Múltiples funciones operativas del navegador

1) Abrir una nueva pestaña

2) Cambiar a una nueva pestaña

3) Simule la rueda del mouse para deslizarse hacia la parte inferior de la página

4) Obtenga el código fuente de la página actual y ubique los campos a interceptar a través de palabras clave

from selenium import webdriver
import time


options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)  #不自动关闭浏览器
options.add_argument('--start-maximized')   #浏览器窗口最大化
bro = webdriver.Chrome(options=options)
url = 'https://www.baidu.com'
bro.get(url)
print(bro.title)

new_url = 'http://news.baidu.com/'
# 打开新的标签页
new_window = 'window.open("{}")'.format(new_url)  # js函数,此方法适用于所有的浏览器
bro.execute_script(new_window)

# 获取所有的句柄(打开新标签后,要重新获取窗口句柄)
windows = bro.window_handles
# 切换到 新打开的标签页
bro.switch_to.window(windows[1])
print(bro.title)

# 模拟鼠标滚轮,滑动页面至底部
js = "window.scrollTo(0, document.body.scrollHeight)"
bro.execute_script(js)  # 模拟鼠标滚轮,滑动页面至底部

# 获取当前页面的源码
page_text = bro.page_source
# print(page_text)

# 查找HTML页面中的关键字(页面中有多个,查找最后一个):upload_list_tr
key_str = 'upload_list_tr'
key_str_pos = page_text.rfind(key_str)
# print(key_str_pos)

# 通过字符串截取,找到fdId编号,通过fdId打开新的标签页
fdId = page_text[key_str_pos-41:key_str_pos-9]
# print(fdId)

new_file_url = 'http://news.baidu.com/view.jsp?fdId=' + fdId
print(new_file_url)
# 打开新的标签页
new_window = 'window.open("{}")'.format(new_file_url)  # js函数,此方法适用于所有的浏览器
bro.execute_script(new_window)
time.sleep(1)

# 关闭当前页面
# bro.close()

# 切换到 第一个打开的标签页
bro.switch_to.window(windows[0])
print(bro.title)

4. Incruste un iframe en la página, ubique el xpath en el iframe

from selenium import webdriver
from selenium.webdriver.common.by import By

url = 'https://www.XXXXXX.com'
bro = webdriver.Chrome()
bro.get(url)

# 切换到iframe中,才能识别数据的xpath标签
# 获取iframe的xpath
iframe_xpath = '/html/body/div[4]/div[1]/div/div/div[3]/div/div/div[2]/div/div[1]/div/div/iframe'
iframe = bro.find_element(By.XPATH, iframe_xpath)
# 获取iframe标签中的属性值
attr_value = iframe.get_attribute("kmss_fdid")
print(attr_value)
# 切换进入iframe中
bro.switch_to.frame(iframe)

# 定位到iframe中记录的xpath,点击记录
xpath = '/html/body/div[4]/div/div[4]/div[1]/div/div/table/tbody/tr[1]'
bro.find_element(By.XPATH, xpath).click()

Soluciones a problemas comunes:

1. Aparecen caracteres ilegibles en la consola del depurador

inserte la descripción de la imagen aquí

File Encoding Simplemente modifíquelo Project Encodinga GBK.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/nikeylee/article/details/128339501
Recomendado
Clasificación