【问题标题】:Detect location of specific text检测特定文本的位置
【发布时间】:2016-10-30 16:58:39
【问题描述】:
Appium 1.5.0 
Xcode  7.3 
IOS 10.11.4 OSX EI Capitan
Using on:Simulator iOS 8.1

假设我们有一个文本字段To see more information clickhereand to get more clickhere

所以我使用xpath 识别了文本,我可以得到它的位置和大小。 现在我们能否以某种方式获得 here 的位置。我需要单击它,但因为它不是元素,所以我无法搜索它。因此,不知何故,如果我能得到它的位置,我就可以tap

但是我们如何才能获得它的位置并仍然保持其通用性以便它在不同的设备上运行?

【问题讨论】:

  • 我有一个想法,但我不知道Appium,你能用Objective C吗?
  • @AnthoninC。不幸的是必须使用appium ......你仍然可以分享这个想法......作为答案......我会尝试它是否有效......我在python中做它
  • @DungProton 我在 python 中需要它......通过appium-python 客户端......你知道如何在 python 中实现同样的功能
  • 如果您调用source_window,它将返回所有元素及其位置

标签: python ios appium appium-ios python-appium


【解决方案1】:

没有任何直接的方法可以实现这一点(Appium 本身没有可用的 API)。 但是,我的解决方案是通用的,适用于所有设备(Android 和 iOS),所有编程语言实现。

  1. [你已经完成]获取元素的位置和大小。
  2. 截取当前屏幕的屏幕截图。
  3. 使用图像的位置和大小从屏幕截图中裁剪图像。[如果没有不明确的目标,可以跳过此步骤]
  4. [您只需手动执行一次] 裁剪出您想要获取位置的图像部分。
  5. 搜索裁剪图像的位置,获取位置并执行精确的点击/单击。

图片搜索请看这里:How to find an image within another image using python

【讨论】:

  • 我标记了这一点,虽然它并不完全通用,因为当设备发生变化时,必须再次进行一次手动工作......
【解决方案2】:

使用Objective C的想法(我知道OP使用Appium但他告诉我回答)是使用诸如TTTAttributedLabel之类的库并以这种方式使用它:

创建TTTAttributedLabelUILabel子类),将文本内容放入其中,就好像它是一个UILabel一样。将其委托设置为自己。然后,以这种方式添加一个单词的链接:

NSRange rangeWord = [attributedLabel.text rangeOfString:@"here"];
[attributedLabel addLinkToURL:[NSURL URLWithString:@"anActionOnClickHere"] withRange:rangeUser];

点击单词时,它将调用此方法,您可以在其中处理点击:

- (void)attributedLabel:(__unused TTTAttributedLabel *)label
   didSelectLinkWithURL:(NSURL *)url {
    NSString *urlToString = [url absoluteString];

    if ([urlToString containsString:@"anActionOnClickHere"]) { //perform segue for example
        [self performSegueWithIdentifier:@"hereSegue" sender:self];
    }
}

我对Python一窍不通,希望你能找到等效的方法。

【讨论】:

  • Thanx....会深入研究,虽然一开始这似乎在 python 中是不可能的......会更新你
猜你喜欢
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多