无法使用pytest_bdd在每次迭代中单击'Add Friend'按钮



我正在尝试构建一个基于pytest_bdd的测试自动化框架。我可以在我的社交网站上执行许多功能,在那里我可以执行自动化。

所以,我的用例是,登录后,我需要搜索一个用户,然后点击"添加朋友"按钮。如果我尝试手动地给出特定的xpath,我就能做到。但当我搜索多个同名用户时,例如"Nitin kumar",会有两个同名用户。我想把他们两个都添加为我的朋友,但我无法点击他们。

我的步骤如下:

  • 登录
  • 搜索用户(Nitin kumar(
  • 点击"添加朋友"按钮-这就是我遇到问题的地方

test_nitsanon.py 的必要片段

@when('the user clicks on add as friend besides a user')
def sendFrndReq(browser):
res, xp = clickBtn_multiple(browser, sendReq_addFrndBtn)
print('nnn Sent Friend Request to all users with mentioned name >>> DEBUGn', res, xp)

函数的代码段.py

# Clicks a button on every iteration
def clickBtn_multiple(browser, xpath):
wait(3)
res = []
xp = []
s = browser.find_elements(By.XPATH, xpath)
for i in s:
res.append(i.text)
if xpath.is_displayed():
a = clickBy_Xpath(browser, xpath)
xp.append(a)
else:
continue
return res, xp

来自xpaths.py 的代码段

# Send friend request
sendReq_addFrndBtn = "//div[text()='" + sendReq_name + "']/ancestor::div/div/div/div/div/div[2]/child::div[2]/div/form/div/button"

variables.py 中的代码段

nitsanonURL = "http://nitsanon.epizy.com/"
userValue = 'nitin'
passValue = 'kumar'
sendReq_name = "Nitin kumar"

这个代码出了什么问题?我想我做的函数有问题!return语句正在返回一个空列表。请在此处检查输出图像。

我已经增强了functions.py文件的代码。但我也得到了StaleElementReferenceException,用于检查不同的功能。

以下是更新后的代码:

def clickBtn_multiple(browser, xpath):
wait(3)
res = []
xp = []
s = browser.find_elements(By.XPATH, xpath)
print(s)
for i in s:
if i.is_displayed():  # Changed xpath.is_displayed() to i.is_displayed()
res.append(i.text)
a = clickBy_Xpath(browser, xpath)
xp.append(a)
return res, xp

我现在正在尝试实现"Unfriend"功能。要导航到"朋友"选项卡&具有特定名称的无好友用户。

test_nitsanon.py 的代码段

@when('the user clicks on unfriend besides a user')
def sendFrndReq(browser):
res, xp = clickBtn_multiple(browser, unfrnd_Btn)
print('nnn Unfriended to all users with mentioned name >>> DEBUGn', res, xp)

xpaths.py 的代码段

navOption_friends = "//a[contains(text(),'Friends')]"
unfrnd_Btn = "//div[text()='" + sendReq_name + "']/ancestor::div/div[2]/child::div[1]/a"

这里是我处理控制台异常的输出。

之所以会出现这种情况,是因为单击一次"取消好友"按钮后,页面会刷新并导航到另一个页面。

我有一个逻辑,每次在第一次迭代中用值1(比方说(检查&将保存该值直到下一次迭代。在此之前,我们将导航回"朋友"选项卡&对于剩余的迭代,再次返回到该函数。但是,我无法实现这个。

需要答案。无法入睡。我很想在不使用任何OOP概念的情况下为测试自动化构建一个框架。

最新更新