我对Python有点新鲜(通常做C#的东西).. 我正在尝试使用在同一个类中定义的另一个函数,由于某种原因我无法访问它。
class runSelenium:
def printTest():
print('This works')
def isElementPresent(locator):
try:
elem = driver.find_element_by_xpath(locator)
bRes = True
except AssertionError:
print('whatever')
else:
return False
def selenium():
driver = webdriver.Firefox()
driver.get("https://somesite.com/")
printTest()
isPresent = isElementPresent("//li[@class='someitem'][60]")
当尝试使用printTest()和isElementPresent()时,我得到:函数未定义.. 这可能是我在Python中无法理解的超级微不足道的东西.. 谢谢你的帮助!
答案 0 :(得分:4)
以下是python中的一些示例,可以帮助您入门:
class RunSelenium(object):
def printTest(self):
print('printTest 1!')
@staticmethod
def printTest2():
print('printTest 2!')
def printTest3():
print('printTest 3!')
# Call a method from an instantiated class
RunSelenium().printTest()
# Call a static method
RunSelenium.printTest2()
# Call a simple function
printTest3()
答案 1 :(得分:1)
如果您使用的是Python2.X
在你的代码中,每个东西都被顺序解释而不是类,因此,它们无法找到方法,直到它们被定义。你有几个错误:
self
作为第一个参数。
对于课程字段,请使用self.field_name
self.method_name()
代码应为
class runSelenium:
def printTest(self):
print('This works')
def isElementPresent(self,locator):
try:
elem = driver.find_element_by_xpath(locator)
bRes = True
except AssertionError:
print('whatever')
else:
return False
def selenium(self):
driver = webdriver.Firefox()
driver.get("https://somesite.com/")
self.printTest()
isPresent = self.isElementPresent("//li[@class='someitem'][60]")
#Edit: To Run
a=runSelenium()
a.selenium()
答案 2 :(得分:1)
这是在同一个类中调用函数的另一种方法:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
class runSelenium:
def __init__(self):
# define a class attribute
self.driver = None
def printTest(self):
print('This works')
def isElementPresent(self, locator):
try:
elem = self.driver.find_element_by_xpath(locator)
bRes = True
except NoSuchElementException:
print('whatever')
else:
return False
def selenium(self):
self.driver = webdriver.Firefox()
self.driver.get("https://somesite.com/")
self.printTest()
isPresent = self.isElementPresent("//li[@class='someitem'][60]")
if __name__ == '__main__':
# create an instance of class runSelenium
run = runSelenium()
# call function
run.selenium()
答案 3 :(得分:0)
缩进你的功能。截至目前,他们不属于你的班级。
class runSelenium:
def printTest():
print('This works')
def isElementPresent(locator):
try:
elem = driver.find_element_by_xpath(locator)
bRes = True
except AssertionError:
print('whatever')
else:
return False
def selenium():
driver = webdriver.Firefox()
driver.get("https://somesite.com/")
printTest()
isPresent = isElementPresent("//li[@class='someitem'][60]")
您没有收到任何IDE语法错误,因为这些函数不会 属于该类。但是他们必须在课堂下缩进才能成为班级的一部分。