gpt4 book ai didi

java - 有没有办法分离出异常原因中提供的信息?

转载 作者:行者123 更新时间:2023-12-02 04:10:46 26 4
gpt4 key购买 nike

当我打印由 NoSuchElementException 引起的 TimeoutException 的原因时,如下所示:

catch (TimeoutException tox) {
tox.printStackTrace();
printWarn("Cause for failure => " + tox.getCause());
}

我从中得到的输出如下:

Cause for failure => org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 10.41 seconds..

Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06' System info: host: 'localhost', ip: '172.20.44.84', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.8.0_65'

Driver info: AppiumDriver

Capabilities [{....}]

Session ID: 405d7843-5353-4a96-9288-b6d8301651b5

* **Element info: {Using=id, value=et_mobile_editTextView}

我可以使用任何属性或附加我可能不知道的任何方法分别获取所有粗体信息吗?

我目前拥有的是:

String completeCause = tox.getCause();

我正在寻找的是:

String buildInfo = tox.<somemethod>();
String driverInfo = tox.<somemethod>(); etc..

预先感谢您抽出时间来帮助我解决此问题。

最佳答案

Selenium JavaDoc TimeOutException显示方法 getAdditionalInformationgetBuildInformationgetDriverNamegetSystemInformation,它们将分别为您提供所有需要的信息。

catch(TimeoutException tox) {
tox.printStackTrace();
String driverName = tox.getDriverName();
BuildInfo buildInfo = tox.getBuildInformation();
...
}

元素信息隐藏在getAdditionalInformation中。看着source code WebDriverException(您的异常继承自)的信息存储在私有(private)映射中。但是,信息由 \n 分隔,这使您可以过滤这些条目并仅搜索带有元素信息的条目。

它可能看起来像这样(未经测试,只是写下来)

String[] additionalInformation = tox.getAdditionalInformation().split("\n");

for(String s : additionalInformation) {
String[] part = s.split(":");
if("Element Info".equals(part[0]) {
String elementInfo = part[...]; //you need to investigate the right output of the split
}
}
<小时/>

[旧帖子]

正如我所见,TimeOutException.getCause() 将返回一个 Throwable,在本例中是 NoSuchElementExceptionSeleniums JavaDoc显示有方法 getDriverNamegetSystemInformation

catch (TimeoutException tox) {
tox.printStackTrace();
if(tox.getCause() instanceof NoSuchElementException) {
NoSuchElementException nse = (NoSuchElementException) tox.getCause();
...
}
}

关于java - 有没有办法分离出异常原因中提供的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com