首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将变量传递给选择器和python函数,哪个变量将在测试级别声明?

如何将变量传递给选择器和python函数,哪个变量将在测试级别声明?
EN

Stack Overflow用户
提问于 2022-08-04 16:04:44
回答 1查看 53关注 0票数 0

你能帮我做个测试吗?我开始使用页面对象中的python和selenium来实现项目的自动化。我已经为定位器分离了文件,为不同的页面分离了文件(到目前为止,只有2页),并且为测试本身分离了文件。

在locators文件中,我编写了我的选择器,其中包含一个变量。我需要它是可变的,因为稍后我将有10个以上的选择器具有相同的Xpath,其中只有文本更改。所以,本文我把它设为一个变量。

代码语言:javascript
运行
复制
class AgreementPageLocators:
.........
MAIN_SEARCH_PK = (By.XPATH, f'//div[contains(text(), {variable})]')

在“协议”一页中,我定义了应该采取的行动。基本上是从下拉框中添加一些内容。用蓝色标记,是我调用包含变量的定位器的地方。

在我的测试文件中,我调用协议方法,其中定义了变量:

代码语言:javascript
运行
复制
# add agreement if it doesn't exist
if len(browser.find_elements(*AgreementPageLocators.AGREEMENT_CRIME)) == 0:
    agreement_page = AgreementPage(browser)
    agreement_page.agreements(variable='text1')
else:
    pass

显然,这不起作用,因为我的测试返回:

MAIN_SEARCH_PK = (By.XPATH,f‘// defined (text(),{variable})') E NameError:未定义名称“variable”

通过在选择器中放置所需的文本而不是变量,一切都可以正常工作。但是我想让它动态化,而不是用不同的选择器重写很多次相同的函数。

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 17:08:42

尝试将MAIN_SEARCH_PK定义为

代码语言:javascript
运行
复制
MAIN_SEARCH_PK = (By.XPATH, '//div[contains(text(), "{}")]')

代码语言:javascript
运行
复制
def agreements(self, variable):
    ...
    pluscrime = browser.find_element(*AgreementPageLocators.MAIN_SEARCH_PK.format(variable))

不要将您的代码添加为图像!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73239042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档