我尝试侦听变量的值并执行一些具有特定值的代码。
例如我在switch语句中执行函数element()
,如果break
的值为false,则必须执行$element
。
此刻我是这样的:
switch(strtolower($testcase)) {
case 'test':
$element = $sel->element("class name", "btn-primary", true);
if ($element == false) { break; }
$element->click("");
...
public function element($using, $value, $takeScreenshot=false, $customMessage="")
{
try {
$element = $this->driver->element($using, $value);
} catch(PHPWebDriver_UnhandledWebDriverError $exception) {
$msg = "<b>PHPWebDriver_UnhandledWebDriverError: $using</b> is "
. "not a valid value for the parameter <b>\$using</b>!";
if ($customMessage !== "") {
$msg = "<b>$customMessage</b><br>$msg";
}
$this->setMessage(1, $msg, $exception, $takeScreenshot, $value);
return false;
} catch(PHPWebDriver_NoSuchElementWebDriverError $exception) {
$msg = "<b>PHPWebDriver_NoSuchElementWebDriverError:</b> No "
. "Element with <b>'$using'</b> and value <b>'$value'</b> found !";
if ($customMessage !== "") {
$msg = "<b>$customMessage</b><br>$msg";
}
$this->setMessage(1, $msg, $exception, $takeScreenshot, $value);
return false;
}
return $element;
}
但是我想简化一下,以便不再需要行if ($element == false) { break; }
。例如
switch(strtolower($testcase)) {
case 'test':
$element = $this->element("class name", "btn-primary", true);
$element->click("");
...
我尝试return break;
,但是失败了。还有另一种方法吗?例如如果break
的值为false,我可以添加一个在切换时自动执行$element
的EventListener吗?
答案 0 :(得分:1)
构建函数时,通常最好将它们设计为不耦合的,而不是耦合的。这意味着element()不必在乎它是什么。
因此,试图从element()中断开开关将是一个糟糕的编程设计。
如果element()在碰到某个位置时总是停止执行,无论调用什么,都应考虑引发异常。但是,这不会简化switch语句中的代码,因为您必须使用try,catch块。
话虽如此,由于PHP允许在条件中进行赋值,因此您可以简化编写为的代码:
if ($element = $sel->element("class name", "btn-primary", true)) {
$element->click("");
}