如何检查硒选择器是否成功?

时间:2015-10-23 09:52:19

标签: java selenium appium ui-automation mobile-devices

我目前正在使用Appium为网站开发自动化UI测试。 我在testobject上使用许多设备运行我的测试,并且我试图解决一些问题。

我的示例代码是:

WebElement lexiconCollapsible = mDriver.findElement(By.xpath("//*[@id='1014']/a"));
assertNotNull(lexiconCollapsible);
ScrollHelper.scrollToElement(mDriver,lexiconCollapsible);
Thread.sleep(1000);
lexiconCollapsible.click();

这适用于许多设备,但不适用于所有设备。 在某些我得到以下错误代码:

org.openqa.selenium.InvalidSelectorException: Argument was an invalid selector (e.g. XPath/CSS). (WARNING: The server did not provide any stacktrace information)

在我想要单击元素的位置抛出异常,因此该对象不为null。

所以我的问题是: 有没有人找到一个解决方案来检查设备是否能够找到对象?有没有类似isObjectFound方法呢?

我也尝试过css选择器,id等,但结果是一样的。

2 个答案:

答案 0 :(得分:1)

来自Selenium Docs,

exception selenium.common.exceptions.InvalidSelectorException(msg=None, screen=None, stacktrace=None)[source]
Thrown when the selector which is used to find an element does not return a WebElement. Currently this only happens when the selector is an xpath expression and it is either syntactically invalid (i.e. it is not a xpath expression) or the expression does not select WebElements (e.g. “count(//input)”).

所以看起来你的Selector是不正确的,因为它只发生在XPATH上,你应该尝试使用css选择器。

尝试,

WebElement lexiconCollapsible = mDriver.findElement(By.cssSelector("#1014 a")).click();

关于您的isObjectFound方法,当您执行findElement时,看起来似乎找到了WebElement,您只能在click()上获得例外。我建议您切换到CSS选择器以避免此异常。

答案 1 :(得分:0)

JeffC提供的答案。 这是函数之间的超时和等待时间的问题。

Utility.implicitlyWaitForElementPresent(mDriver,By.xpath("//*[@id='1014']/a"));
WebElement lexiconCollapsible = mDriver.findElement(By.xpath("//* [@id='1014']/a"));
assertNotNull(lexiconCollapsible);
ScrollHelper.scrollToElement(mDriver,lexiconCollapsible);
Thread.sleep(1000);
lexiconCollapsible.click();

使用xpath可以更好地工作。