Xamarin UI 测试。获取控件的背景颜色 ios

Posted

技术标签:

【中文标题】Xamarin UI 测试。获取控件的背景颜色 ios【英文标题】:Xamarin UI Test. Take control's background color ios 【发布时间】:2017-08-25 09:25:29 【问题描述】:

我是 xamarin UI 测试的新手。 我需要获取 UIView 的颜色。据我了解,我需要使用 Invoke 方法,因为没有其他测试方法可以做到这一点。我试着用像

这样的东西来着色
var color = app.Query(c => c.Marked("someText").Invoke("BackgroundColor"));

var color = app.Query(c => c.Marked("someText").Invoke("BackgroundColor").Invoke("CGColor").Value());

但它会返回带有星号字符串"******" 的对象,或者在使用"Value" 的情况下崩溃。 请告诉我我做错了什么?

此外,例如,对于任何错误的请求,我都会收到“*****”

var result = app.Query(x => x.Marked("Mark").Invoke("TextColorAAAAAAA"));
result = object[1]    [0] "*****"

所以 xamarin 不知道命令“背景”。

更新

看起来 xamarin 一直在等待来自小写字母的命令“backgroundColor”。但这并不能解决问题。现在它返回空对象,甚至没有默认值......

[0] 
    red => [

    ],
    alpha => [

    ],
    type => [

    ],
    blue => [

    ],
    green => [

    ]

【问题讨论】:

【参考方案1】:

尝试像这样使用UIColor 的私有字段styleString

var color = app.Query(c => c.Marked("someText").Invoke("backgroundColor").Invoke("styleString"))[0];

你应该得到一个字符串 rgb 值:rgb(1,2,3)

这样,您可以解析字符串以从中获取 R、G 和 B 元素。

【讨论】:

仍有"*****" 的字符串。看起来Invoke("BackgroundColor") 返回这种奇怪的格式和其他操作没有结果:( @JuniorD。这很奇怪,我稍后会在我的 Mac 上尝试一下。 @JuniorD。太棒了,我今天或明天拿回我的 Mac,然后检查一下。 一切都适用于你的 "styleString" 和 backgroundColor 与小写。非常感谢你!请编辑您的BackgroundColorbackgroundColor 以获得完全正确的答案:) @JuniorD。很高兴终于解开了这个谜团。 ;) 发布已修复。【参考方案2】:

我知道这是旧的,但如果有人需要 Xamarin android 相同,您可以执行以下操作:

int colorValue = Convert.ToInt32(App.Query(x => x.Class("LinearLayout").Invoke("getBackground").Invoke("getColor"))[0]);
var color = Color.FromArgb(colorValue);
return color;

【讨论】:

以上是关于Xamarin UI 测试。获取控件的背景颜色 ios的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms/UI:如何在 2 个布局之间垂直对齐项目

更改 DatePicker [Xamarin.Forms] 的颜色

如何获取特定元素的文本 - Xamarin UI 测试

移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件

如何在 xamarin 表单中刷新选择器控件的 UI

Xamarin Shell 导航浮出控件选定标签颜色未更改