硒多个实例运行相同的脚本

时间:2020-09-18 08:02:49

标签: python selenium selenium-webdriver selenium-chromedriver

我正在使用python这个自动化程序,可以输入文本然后将其提交到网站上。但是,我拥有的文本数量非常大,一次只能输入1行文本,然后必须重新加载页面,我必须先登录网站,所以driver.get()并不多有用,因为该网站不存储我的凭据。因此,我必须手动登录并首先执行我已经完成的操作,但是现在我想同时运行此脚本的多个实例。我相信不可能在同一浏览器实例的不同选项卡中运行相同的脚本。我阅读了有关硒网格的知识,并对它的工作原理有所了解,但我无法实现它。有什么办法可以简化我的流程?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "localhost:9222")

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH, chrome_options=chrome_options)


def subject():
  content = driver.find_element_by_css_selector('a.btn-default')
  driver.execute_script("arguments[0].click();", content)
  try:
     content = driver.find_elements_by_xpath('//span[text()="Okay"]')
     driver.execute_script("arguments[0].click();", content[1])
  except IndexError:
     driver.refresh()

while True:
with open('name_list.txt','r') as f:
  for line in f:
    wait = WebDriverWait(driver, 10)
    search = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'class_name')))
    search.send_keys(line)
    subject()
    content = driver.find_element_by_xpath('//button[text()="Submit"]')
    driver.execute_script("arguments[0].click();", content)
    driver.refresh()

希望我能对您有所帮助。我尝试使用pytest,但是当我在主机上运行并想从同一端口执行上传任务时,我不知道如何实现它。

1 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="instances" thread-count="2">
    <test name="Test">
        <classes>
            <class name="Parallel"/>
        </classes>
    </test> <!-- Test -->
</suite> <!-

This is XML file