2017-02-07 3 views
0

Скриншот selenium ниже работает и делает то, что мне нужно. Но, как вы видите, сценарий довольно уродливый и очень избыточный, и моя цель - сделать код более компактным и менее избыточным.Как запустить тесты Selenium параллельно с python?

Теперь он должен инициировать 5 сеансов хрома, вводя 5 разных учетных данных. Я знаю, что должен многому решать, используя петли, но, к сожалению, мои навыки программирования не так хороши.

def setUp(self): 

    self.driver1 = webdriver.Chrome("C:\chromedriver\chromedriver.exe") 
    self.driver2 = webdriver.Chrome("C:\chromedriver\chromedriver.exe") 
    self.driver3 = webdriver.Chrome("C:\chromedriver\chromedriver.exe") 
    self.driver4 = webdriver.Chrome("C:\chromedriver\chromedriver.exe") 
    self.driver5 = webdriver.Chrome("C:\chromedriver\chromedriver.exe") 

def test_affersverken(self): 
    ###############driver1########################## 
    driver1 = self.driver1 
    driver1.get("www.somepage.com") 
    linkmenus = self.driver1.find_elements_by_xpath(
     ".//ul[@id='superfish-1' and @class='sf-menu menu-universe-menu sf- horizontal sf-style-none sf-js-enabled']/li/a") 
    listmenus = [] 
    for menus in linkmenus: 
     listmenus.append(menus.text) 
    lastMenu = listmenus[-1] 
    WebDriverWait(self.driver1, 10).until(EC.presence_of_element_located((By.LINK_TEXT, lastMenu))).click() 
    username1 = self.driver1.find_element_by_xpath(".//*[@id='edit-name']") 
    username1.send_keys(someuser) 
    password1 = self.driver1.find_element_by_xpath(".//*[@id='edit-pass']") 
    password1.send_keys(somepassword) 
    submit1 = self.driver1.find_element_by_xpath(".//*[@id='edit-submit']") 
    submit1.submit() 

    ###############driver2########################## 
    driver2 = self.driver2 
    driver2.get("www.somepage.com") 
    linkmenus = self.driver2.find_elements_by_xpath(
     ".//ul[@id='superfish-1' and @class='sf-menu menu-universe-menu sf-horizontal sf-style-none sf-js-enabled']/li/a") 
    listmenus = [] 
    for menus in linkmenus: 
     listmenus.append(menus.text) 
    lastMenu = listmenus[-1] 
    WebDriverWait(self.driver2, 10).until(EC.presence_of_element_located((By.LINK_TEXT, lastMenu))).click() 
    username2 = self.driver2.find_element_by_xpath(".//*[@id='edit-name']") 
    username2.send_keys(someuser) 
    password2 = self.driver2.find_element_by_xpath(".//*[@id='edit-pass']") 
    password2.send_keys(somepassword) 
    submit2 = self.driver2.find_element_by_xpath(".//*[@id='edit-submit']") 
    submit2.submit() 

    ###############driver3########################## 
    driver3 = self.driver3 
    driver3.get("www.somepage.com") 
    linkmenus = self.driver3.find_elements_by_xpath(
     ".//ul[@id='superfish-1' and @class='sf-menu menu-universe-menu sf-horizontal sf-style-none sf-js-enabled']/li/a") 
    listmenus = [] 
    for menus in linkmenus: 
     listmenus.append(menus.text) 
    lastMenu = listmenus[-1] 
    WebDriverWait(self.driver3, 10).until(EC.presence_of_element_located((By.LINK_TEXT, lastMenu))).click() 
    username3 = self.driver3.find_element_by_xpath(".//*[@id='edit-name']") 
    username3.send_keys(someuser) 
    password3 = self.driver3.find_element_by_xpath(".//*[@id='edit-pass']") 
    password3.send_keys(somepassword) 
    submit3 = self.driver3.find_element_by_xpath(".//*[@id='edit-submit']") 
    submit3.submit() 

    ###############driver4########################## 
    driver4 = self.driver4 
    driver4.get("www.somepage.com") 
    linkmenus = self.driver4.find_elements_by_xpath(
     ".//ul[@id='superfish-1' and @class='sf-menu menu-universe-menu sf-horizontal sf-style-none sf-js-enabled']/li/a") 
    listmenus = [] 
    for menus in linkmenus: 
     listmenus.append(menus.text) 
    lastMenu = listmenus[-1] 
    WebDriverWait(self.driver4, 10).until(EC.presence_of_element_located((By.LINK_TEXT, lastMenu))).click() 
    username4 = self.driver4.find_element_by_xpath(".//*[@id='edit-name']") 
    username4.send_keys("someuser") 
    password4 = self.driver4.find_element_by_xpath(".//*[@id='edit-pass']") 
    password4.send_keys(somepassword) 
    submit4 = self.driver4.find_element_by_xpath(".//*[@id='edit-submit']") 
    submit4.submit() 

    ###############driver5########################## 
    driver5 = self.driver5 
    driver5.get("www.somepage.com") 
    linkmenus = self.driver5.find_elements_by_xpath(
     ".//ul[@id='superfish-1' and @class='sf-menu menu-universe-menu sf-horizontal sf-style-none sf-js-enabled']/li/a") 
    listmenus = [] 
    for menus in linkmenus: 
     listmenus.append(menus.text) 
    lastMenu = listmenus[-1] 
    WebDriverWait(self.driver5, 10).until(EC.presence_of_element_located((By.LINK_TEXT, lastMenu))).click() 
    username5 = self.driver5.find_element_by_xpath(".//*[@id='edit-name']") 
    username5.send_keys(someuser) 
    password5 = self.driver5.find_element_by_xpath(".//*[@id='edit-pass']") 
    password5.send_keys(somepassword) 
    submit5 = self.driver5.find_element_by_xpath(".//*[@id='edit-submit']") 
    submit5.submit() 

    time.sleep(20) 

def tearDown(self): 
    self.driver1.quit() 
    self.driver2.quit() 
    self.driver3.quit() 
    self.driver4.quit() 
    self.driver5.quit() 

ответ

1

Используйте узел или py.test, запустить код в pararell, один тест для потока/процесса, а не один тест для браузера. Используйте xdist для распространения этих тестов.

Смежные вопросы