selenium 无法使用PYTEST_BDD在每次迭代中点击‘Add Friend’按钮

q35jwt9p  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在尝试构建一个基于pytest_bdd的测试自动化框架。我可以在我的Social Networking Site上执行许多功能,在那里我正在执行我的自动化。
所以,我的用例是,在登录后,我需要搜索用户并点击“添加朋友”按钮。如果我尝试手动提供特定的XPath,我能够做到。但是当我搜索同名的多个用户时,比如‘Nitin Kumar’,有两个同名的用户。我想把他们两个都添加为我的朋友,但我无法点击他们。
我的步骤如下:

  • 登录
  • 搜索用户(Nitin Kumar)
  • 点击‘Add Friend’(添加朋友)按钮-这就是我遇到问题的地方

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('\n\n\n Sent Friend Request to all users with mentioned name >>> DEBUG\n', res, xp)

Functions.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语句返回一个空列表。Check the output image here

jjhzyzn0

jjhzyzn01#

我已经增强了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('\n\n\n Unfriended to all users with mentioned name >>> DEBUG\n', res, xp)

Xpaths.py的代码片段

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

我处理的控制台异常的输出是here
这是因为在点击一次“取消好友”按钮后,页面会刷新并导航到不同的页面。
我有一个逻辑,在第一次迭代期间每次都检查值为1(比方说),并将值保存到下一次迭代。在此之前,我们将导航回Friends选项卡,再次返回到该函数以进行剩余的迭代。但是,我不能实现这一点。
需要答案。睡不着。我非常好奇在不使用任何OOPS概念的情况下构建测试自动化框架。

相关问题