Selenium 一个脚本调用另一个脚本中方法,需要怎么调用

吴俊 · 2018年09月05日 · 最后由 陈子昂 回复于 2018年10月17日 · 1606 次阅读
# coding:utf-8
from selenium import webdriver
import unittest
class Login_Logout1(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        url = "xxx"
        self.driver.get(url)
        self.driver.implicitly_wait(30)

    def verification(self, Info, data):
        #判断是是否相等
        #用法        self.verification("元素",u"对比项")
        try:
            self.assertEqual(self.driver.find_element_by_id(Info).text, data)
        except NoSuchElementException as msg:
            print (u"查找元素异常%s" % msg)


就比如我在这个文件中有个 def verification 方法    我另一个文件想用这个方法是该怎么用
共收到 9 条回复 时间 点赞

先导入,创建类实例,然后调用方法,不过你继承的是 Uittest,理论上没法这样用的,你可以自己写一个方法单独放在一个地方,每次直接用

楼上说的方法可以的,调用其他模块的方法跟继承没关系呢

首先,放到可识别路径下,或者两个文件在同一目录下,之后继承或者实例化都能调用

雨夜狂奔 回复
def verification(self, Info, data):
    #判断是是否相等
    #用法        self.verification("元素",u"对比项")
    try:
        self.assertEqual(self.findElements(Info).text, data)
    except NoSuchElementException as msg:
        print (u"查找元素异常%s" % msg)

单独写在一个脚本中,另一个脚本 from appProject.public import verification 导入了,

这个 self 的要放哪里

def test4(self):
    # 验证码错误
    self.browserengine.writeElement("captcha", "1234")
    self.browserengine.clickElement("submit")
    verification(self,"//*[@id='errorContainer']", u"验证码错误!")

Dodo 回复

那我用的是 verification(self,"//*[@id='errorContainer']", u"验证码错误!") 要怎么用,这个 self 放里面和外面都报错

吴俊 回复

你要理解 self 的含义。。 你为啥要执着于使用在 UnitTest 的外部使用它的方法呢。 assertEqual 自己写一个也不麻烦啊,再不行你可以直接用 assert 啊,这是直接可以用的

雨夜狂奔 回复

想脚本简单点,不用重复写,不过也学到了

self 是指类对象哈,如果你不是在类下面写的函数,这个函数就不用加 self,这个也是普通函数和类里面函数的一个区别吧

第一个可能是不要用 setUp 了解下 setUpClass
因为 setup 是每个 case 都会重跑一次。

self.driver.implicitly_wait(30)  //强烈不推荐用隐式等待对于xpath和css定位会有不确定的伤害

其他文件要用 就是导入 Login_Logout1 类所在的文件 from xxx 路径 import Login_Logout1
因为你这边没有静态的方法装饰器,如果使用类成员方法需要实例化。先试试。。

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册