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 与小写。非常感谢你!请编辑您的BackgroundColor
为backgroundColor
以获得完全正确的答案:)
@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] 的颜色