Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证seleniumxpath语法_Java_Eclipse_Selenium_Xpath - Fatal编程技术网

Java 验证seleniumxpath语法

Java 验证seleniumxpath语法,java,eclipse,selenium,xpath,Java,Eclipse,Selenium,Xpath,我正在用java编写一个方法来等待xpath。但是,如果等待已过,我不想抛出错误。我想返回null(或者元素,如果它确实找到它)。我可以使用try/catch,如果我捕获到一个表示“未找到预期元素”之类的异常,我可以返回null;但我想先验证xpath的语法。例如,这里有一个无效的xpath:“//span[contains(@id,'thiswillneverbeford'),原因很明显是没有关闭,“” 更复杂的是,我们已经编写了一些方法,这些方法只返回未找到的预期元素的消息,而不管该元素是否

我正在用java编写一个方法来等待xpath。但是,如果等待已过,我不想抛出错误。我想返回null(或者元素,如果它确实找到它)。我可以使用try/catch,如果我捕获到一个表示“未找到预期元素”之类的异常,我可以返回null;但我想先验证xpath的语法。例如,这里有一个无效的xpath:
“//span[contains(@id,'thiswillneverbeford'),原因很明显是没有关闭,“

更复杂的是,我们已经编写了一些方法,这些方法只返回未找到的预期元素的消息,而不管该元素是否为有效语法。因此,我无法判断它是否为错误的xpath

我可以自己编写等待,但我不想像通常那样只传递xpath(比如字符串xpath),有时我想要一个列表(字符串…xpath)。我们有一个方法,我真的看不到它会等待任何给定的xpath列表,但我不确定如何自己编写一个


因此,我想我是在问,是否有方法验证selenium xpath的语法是否正确,或者是否有方法等待多个xpath中的任何一个?我可以捕获错误并检查它们,看看哪些是正确的,哪些应该抛出。

好吧,您可以尝试在浏览器控制台上执行xpath并验证输出。当然,我们需要打开要验证xpath的页。可以使用
$x()
执行

$x()
是XPath实用程序函数。您可以检查Chrome的命令行引用

用法:

$x("//span[contains(@id,'ThisWillNEverBeFound" for obvious reasons of no closing ' nor ]")

再想想,也许这并不像我原来想的那么糟糕。在我看来,你有几个选择

  • 尝试查找元素。如果找不到,请将XPath写入日志,以便稍后确定XPath是否有效

  • 尝试查找元素。如果找不到该元素,请验证XPath,如果验证失败,请向日志写入XPath无效的消息

  • 验证XPath。如果XPath无效,请向日志写入一条消息,说明它无效。否则,请尝试查找元素

  • 我想我更喜欢#2。使用#1,您必须在调查时手动验证XPath,这似乎很慢而且不必要。使用#3,您的执行可能会因为验证每个XPath而减慢,这似乎是浪费。使用#2,您可以先查看是否可以找到元素……如果找不到,则验证XPath和wri将消息写入日志


    在中有一种验证XPath语法的简单方法。

    在我看来,您不想这样做。您不应该在执行过程中评估XPath是否有效。传入XPath的人应该在传递XPath之前就这样做。我会尝试获取元素,如果找不到,则将XPath写入日志。当您找到日志中的错误,您可以查看XPath是否是问题所在,如果是问题所在,请返回并修复。我理解您的担忧,但它不会提醒用户XPath无效的事实吗?我考虑了更多,并改变了主意……有点。:)我添加了一些选择,我会考虑。好的,让我来看看。谢谢。我有很多的XPath在控制台上工作,但是没有被Selk发现。