0

我正在使用 PHP facebook/webdriver包来处理一些网络自动化测试。

我一直无法清除元素的内容<textarea>并且已经用完了选项。

鉴于:

  • 一个dom元素<textarea>content</textarea>
  • $element成为一个Facebook\WebDriver\WebDriverElement实例

我试过打电话RemoteWebElement::clear()

// phpdoc for this method states: 
// "If [is] TEXTAREA or text INPUT element, this will clear the value"

var_dump($element->getTagName()); // string(8) "textarea"
var_dump($element->getText());    // string(7) "content"

$element->clear(); 

var_dump($element->getText());    // string(7) "content"

我试过发送退格键:

var_dump($element->getTagName()); // string(8) "textarea"
var_dump($element->getText());    // string(7) "content"

for ($i = 0; $i < mb_strlen($element->getText()); $i++) {
    $element->sendKeys(WebDriverKeys::BACKSPACE);
}

var_dump($element->getText());    // string(7) "content"    

我有点不知所措。有任何想法吗?

4

1 回答 1

0

要查询文本区域的内容,请使用$element->getAttribute('value')而不是$element->getText().

RemoteWebElement::getText()似乎只是为了获取页面加载时存在的文本节点。至少这是我基于观察到的行为的最佳猜测。

RemoteWebElement::getAttribute('value')获取 texarea 的当前内容。由于 texarea 元素在 HTML 中没有 value 属性,我没有猜到这是正确的解决方案。

于 2019-09-26T15:34:35.583 回答