2016-02-18 171 views
0

我已经将id与元素关联,但是尝试使用findElement(By.id())查找时,它不起作用。在Appium中通过id查找元素

另外我已经通过了几个博客,像在这里Can we find element by ID in appium一样的问题,但我看到在那里的资源ID有前缀包名和:id。在我的情况下,这些没有关联。元素细节的屏幕截图如下: enter image description here

我已经使用下面的代码通过id来定位元素。

- driver.findElement(By.id("loginHome")); 
- driver.findElement(By.id("com.packagename:id/loginHome")); 
- driver.findElement(By.id("android:id/loginHome")); 
- driver.findElement(By.xpath(//*[@id='loginHome'])); 

但上述代码片段都没有工作。

有人可以帮助我解决这个问题!

日Thnx提前...

+0

你好吗'NoSuchElementException'所有的试过的方法?你也可以试试'driver.findElement(By.name(“。Login”));' – nullpointer

+0

是的,我得到了NoSuchElementException。 尝试使用driver.findElement(By.name(“。Login”));但同样的错误。这是因为登录前看到的点(。)实际上并不是一个点,而是一个统一的字符,因此无法继续进行此操作。 – harshaarchak

回答

1

不完全回答你的问题,而是提供了一种替代方法为你完成测试。

我按照此链接https://github.com/appium/appium-dot-app它的工作原理。

你不需要编码所有东西。该应用程序提供了一些简单的方法来记录您的点击和手势。

例如,当我点击某个东西时,它会自动打印出脚本。 wd.find_element_by_xpath(“// android.view.View [1] /android.widget.FrameLayout [2] /android.widget.LinearLayout [1] /android.widget.RelativeLayout [2] /android.widget.RelativeLayout [ 1]“)。点击()

而您只需选择自己喜欢的编程语言并在完成测试后保存它。

我必须指出的一件事是,刷卡功能已损坏。使用以下代码执行轻扫手势

wd.swipe(421, 424, 70, 424, 500) 
+0

嗨,我在Windows上使用Appium,当您点击或点击任何元素时,它不会打印任何东西。然而,我提出了自定义xpath,因为你已经提到过,它工作正常。 这是代码:driver.findElement(By.xpath(“// android.webkit。WebView/descendant :: android.widget.Button [@ index = 4]“)); 但是这不是我正在寻找的,因为在少数情况下,真的不可能使用绝对路径一直导航到元素 因此,我想用上面代码片段中显示的id来尝试,但这并不能帮助我找到屏幕上的元素。 – harshaarchak

+0

我正在使用Mac来执行这些测试,但是我记得他们提供两种平台的Inspector/Recorder。https://github.com/appium/appium-app-dot-app/blob/master/README-files/images/inspector.png。这可能会更好,因为你不需要来编码这些xpath,它们的长度很长:/ – VoidExplorer

+0

不幸的是,Mac上的Inspector的记录器和增加的功能在Windows版上不可用!:( – harshaarchak

0

您也可以尝试其他选项。试试这个:

//add some wait command before the element 
Thread.sleep(2000); 
driver.findElementsByXPath("//*[@class='android.widget.Button' and @index='4']"); 
0

尝试添加明确的睡眠页面加载之前单击我们的ID。

0

先试着等待特定元素

MobileElement expelement=(MobileElement) (new WebDriverWait(driver, 15)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//android.widget.Button[@index='4']"))); 

然后尝试做点击(或你该做的活动)

driver.findElement(By.xpath("//android.widget.Button[@index='4']")).click();