如何解决Selenium Python AttributeError:“ NoneType”对象没有属性“ send_keys”
我是Selenium WebDriver的新手,目前正在使用Python进行脚本编写。现在,我想应用参数,我使用Excel应用了数据驱动方法。基本上只有第一个循环可以,它可以读取和写入第一行的数据,但是之后不能。
首先,我在Python文件中创建此文件(作为新模块):
import openpyxl
def getRowCount(file,sheetName):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
return(sheet.max_row)
def getColumnCount(file,sheetName):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
return(sheet.max_column)
def readData(file,sheetName,rownum,columno):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
return sheet.cell(row=rownum,column=columno).value
def writeData(file,columno,data):
workbook = openpyxl.load_workbook(file)
sheet = workbook.get_sheet_by_name(sheetName)
sheet.cell(row=rownum,column=columno).value = data
workbook.save(file)
接下来,我编写此代码以在登录和注销过程中包括数据驱动测试:
path="<<my excel path>>"
rows=XLUtils.getRowCount(path,'Sheet1')
for r in range(2,rows+1):
email=XLUtils.readData(path,"Sheet1",r,1)
password=XLUtils.readData(path,2)
driver.implicitly_wait(100)
time.sleep(3)
driver.find_element_by_xpath('<<my email field xpath element>>').send_keys(email)
driver.implicitly_wait(100)
time.sleep(3)
driver.find_element_by_xpath('<<my password field xpath element>>').send_keys(password)
driver.implicitly_wait(100)
time.sleep(3)
driver.find_element_by_xpath('<<my click login xpath element').click()
driver.implicitly_wait(100)
time.sleep(3)
if driver.title=="<<to verify page title>>":
print("test passed")
XLUtils.writeData(path,3,"test passed")
else:
print("test failed")
XLUtils.writeData(path,"test failed")
# Logout
driver.find_element_by_css_selector("<<my logout element>>").click()
time.sleep(2)
driver.find_element_by_css_selector("<<my logout element>>").click()
time.sleep(3)
我收到错误AttributeError:'NoneType'对象没有属性'send_keys',所以我认为包括waits / sleep可以解决问题,但是我仍然找不到解决它的方法。有人可以帮忙吗?欣赏它。谢谢。
解决方法
问题具有函数返回类型。看到代码的结构后,我可以假定您正在某个设置类中创建WebDriver driver
,并将其传递给周围。
现在,您需要了解何时不向python中的函数添加返回类型,默认情况下它将返回None
。结果,设置方法是将self.driver设置为None
。
请在您的设置方法中添加return driver
语句,它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。