我正在使用selenium 2.46(firefox驱动程序)来开发一个应用程序。我的代码中有很多element.click()。有时,元素不可见或不可点击使应用程序抛出异常异常。
当我读取异常时,它是如此通用,没有关于哪个元素导致问题的信息。
我的问题是:有什么方法可以确切地知道哪个元素(按名称或ID)导致问题。 ---编辑:现在我添加更多细节: 这是我的代码
try{
el = webdriver.findElements(By.cssSelector("#accountDropdownSelect-menu li")).get(i);
el.click();
}catch (Exception e){
throw e;
}
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Build info: version: '2.46.0', revision: '87c69e2', time: '2015-06-04 16:16:47'
System info: host: 'aaaaa-virtual-machine', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-45-generic', java.version: '1.7.0_80'
Driver info: driver.version: unknown
Command duration or timeout: 1.15 seconds
Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'
System info: host: 'aaaaa-virtual-machine', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-45-generic', java.version: '1.7.0_80'
Session ID: 40a1ff52-7082-46f2-a05b-e43d9eade760
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{platform=LINUX, javascriptEnabled=true, acceptSslCerts=true, browserName=firefox, rotatable=false, locationContextEnabled=true, webdriver.remote.sessionid=40a1ff52-7082-46f2-a05b-e43d9eade760, version=39.0, databaseEnabled=true, cssSelectorsEnabled=true, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
答案 0 :(得分:1)
等待可见性,您不必阅读这些例外情况:)
以下是示例:


 public static void waitForVisibilityByXPath( final String xpath){
(new WebDriverWait(driver,timeOut))
 .until(new ExpectedCondition< Boolean>(){
 public Boolean apply(WebDriver d){
 return d.findElement(By.xpath(xpath))。isDisplayed();
}& #xA;});



 }


xpath - xpath定位器你的元素。
 timeOut - 等待的超时

答案 1 :(得分:1)
我实际上遇到了同样的问题。我正在做的是:
1。)在每个System.out.println("some text that identifies your element.click()")
函数之后只需执行一个element.click()
,这样就可以知道它抛出异常的位置。
2。)使用try + catch环绕你的element.click()
并抛出你自己的异常,例如throw New Exception("some text that identifies your element.click()")
我知道它不太舒服,但我还没有找到任何其他更简单的解决方案。