gpt4 book ai didi

react-native - Appium element.text() 返回元素 accessibilityLabel 而不是文本

转载 作者:行者123 更新时间:2023-11-28 20:26:18 26 4
gpt4 key购买 nike

我开始使用 Appium 测试我的 React Native 应用程序。我有一个简单的登录场景,在输入并提交一些用户名和密码后,我希望应用程序 status'Logged in'。我正在 iPhone X 12.2 模拟器上运行测试。

但是测试失败并出现此错误:

Expected: "Logged in"
Received: "status"

无法正确接收文本值。那么如何获取我的元素的内部文本?

应用程序.js:

<Text accessibilityLabel="status">{this.state.status}</Text>

appium.test.js:

test('Login success', async() => {
expect(await driver.hasElementByAccessibilityId('username input')).toBe(true)
expect(await driver.hasElementByAccessibilityId('password input')).toBe(true)
expect(await driver.hasElementByAccessibilityId('submit button')).toBe(true)
expect(await driver.hasElementByAccessibilityId('status')).toBe(true)

await driver.elementByAccessibilityId('username input').sendKeys('some_username')
await driver.elementByAccessibilityId('password input').sendKeys('some_password')

await driver.elementByAccessibilityId('submit button').click()

const result = await driver.elementByAccessibilityId('status').text()

console.log(result) // 'status' WHY???

// the test runs fine until here:

expect(result).toBe('Logged in')
})

我能想到的是 text() 不是获取元素内部文本的正确函数,但这就是我在我一直关注的文档或教程中看到的全部内容...

最佳答案

我遇到了同样的问题。好像是RN0.50引入了这个issue。

这不是 Appium 上的错误,而是 WDA 实现及其返回文本值的方式的问题。 https://github.com/appium/appium/issues/10349有关于这个问题的讨论。

您可以在 IOS 上使用 testID 而不是 accessibilityLabel 来解决它。

let textProps={}
if(Platform.OS==='android')
textProps.accessibilityLabel = "welcomeLabel"
...
...
...
<Text
style={styles.welcome}
{...textProps}
testID="welcomeLabel">
...
...

您仍然可以使用 elementByAccessibilityId 函数。

关于react-native - Appium element.text() 返回元素 accessibilityLabel 而不是文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com