Python Selenium Web驱动程序查询

Python Selenium Web驱动程序查询,python,selenium,selenium-webdriver,webdriver,ui-automation,Python,Selenium,Selenium Webdriver,Webdriver,Ui Automation,我对Python比较陌生。我正在尝试使用Python Selenium web驱动程序实现一些web自动化。 我将为不同的场景编写单独的脚本:例如一个用于登录,另一个用于检查登录页上的工具提示,等等 我的问题是,我想对所有测试用例使用相同的Firefox实例。因此,登录后,我的测试脚本将在登录的FireFox实例上运行 请让我知道如何做到这一点 谢谢 Mohima不要编写单独的脚本。而是编写不同的函数: def login(): ... def check_tooltips(): ... 如果

我对Python比较陌生。我正在尝试使用Python Selenium web驱动程序实现一些web自动化。 我将为不同的场景编写单独的脚本:例如一个用于登录,另一个用于检查登录页上的工具提示,等等

我的问题是,我想对所有测试用例使用相同的Firefox实例。因此,登录后,我的测试脚本将在登录的FireFox实例上运行

请让我知道如何做到这一点

谢谢


Mohima

不要编写单独的脚本。而是编写不同的函数:

def login(): ...
def check_tooltips(): ...
如果您希望将函数放在不同的文件中,这没有问题;您可以从另一个模块导入一个模块(例如tooltips.py):

import tooltips
def login(): ...
def main():
    login()
    tooltips.check_tooltips()

如果在OOP中犹豫不决,也可以使用非OOP方式

# your imports
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import win32com.client
import time
import os

driver=webdriver.Chrome()
driver.get("your url")
wait=WebDriverWait(driver,30)
# select the username and password fields and enter your details and after that click the login button. after that you will see welcome page in the same instance.
username=wait.until(EC.presence_of_element_located((By.ID, 'LoginEmailOrNickname')))
username.send_keys(email)

passw=wait.until(EC.presence_of_element_located((By.ID, 'login-password')))
passw.send_keys(pas)

submit=wait.until(EC.presence_of_element_located((By.ID, 'SignInButton')))
submit.click()


time.sleep(5)

# here comes welcome page after login
mykijiji=wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'My Kijiji')))
mykijiji.click()

您可以使用@classmethoddecorator。例如,您的第一个测试验证登录功能,而不是第二个测试验证,例如搜索按钮等,所有这些都使用一个浏览器实例

下面我将使用Python2.7和unittest

import unittest
from selenium import webdriver

class HomePage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.selenium = webdriver.Firefox()
        cls.selenium.maximize_window()

    def test_login(self):
        self.selenium.get('http://...')
        self.selenium.find_element_by_id()
        #and so on

    def test_search_btn(self):
        pass

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()

if __name__ == '__main__':
    unittest.main()

OP应该使用Firefox驱动程序作为一个全局变量,或者将其作为一个函数参数传递?问题在于有一个自动化框架,它采用单独的脚本并显示每个脚本的输出。如果我将所有内容都放在一个脚本中,它就无法进入框架不幸的是,我不知道如何连接到开放会话。这似乎是一个错误。该页面和链接页面(合并问题)上提到了一些变通方法,但我还没有尝试过。