Selenium:使用xpath在div中输入文本

时间:2014-05-21 06:50:33

标签: java selenium

在selenium for inputbox中,我们可以输入如下值:

WebElement inputBox = driver.findElement(By.xpath(xpath)));
inputBox.sendKeys("abc");

但是在1个网页上,点击后我有一个按钮得到一个div,我必须通过selenium进入,我得到了该div的xpath,如

WebElement inputDiv = driver.findElement(By.xpath("//div[contains(@class,'x-grid3-cell-inner')]"));
inputDiv.sendKeys("abc");           //This is not working

使用xpath,我得到div,但是如何使用它的xpath输入文本?

手动添加文本后

Html:

<div class="x-grid3-cell-inner">ty</div>

我必须输入文本的div是:

<div class="x-grid3-cell-inner" />

3 个答案:

答案 0 :(得分:3)

您可以使用JavaScript

更新DIV文本
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('Div_Id').innerHTML="+ DesiredText);

在JavaScript中使用XPATH

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.evaluate(xpathExpresion, document, null, 9, null).singleNodeValue.innerHTML="+ DesiredText);

Reference

答案 1 :(得分:0)

您无法使用发送密钥编辑此div,因为它没有要发送的输入。相反,请尝试编辑div的文本字段。

答案 2 :(得分:0)

Sendkeys用于在标签名称为“ input”的输入字段中键入 您不能在此处使用sendkeys

相反,您将必须使用JavascriptExecutor来完成此操作

Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Container(
              height: 300,
              width: 300,
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(25),
                  image: DecorationImage(
                      fit: BoxFit.cover,
                      image: NetworkImage(
                          'https://cf.shopee.ph/file/6907c52b5698df501bf2fd83e803d6d2')))),
          FractionalTranslation(
            translation: Offset(0, -0.5),
            child: Container(
              width: 160,
              height: 70,
              child: Center(
                  child: Text(
                '-99%',
                style: TextStyle(
                    fontSize: 24,
                    color: Colors.white,
                    fontWeight: FontWeight.bold),
              )),
              decoration: BoxDecoration(
                  color: Colors.redAccent,
                  borderRadius: BorderRadius.circular(50),
                  border: Border.all(width: 5, color: Colors.white)),
            ),
          ),
          FractionalTranslation(
            translation: Offset(0, -1),
            child: Text(
              'US \$0.01',
              style: TextStyle(
                  color: Colors.redAccent,
                  fontWeight: FontWeight.bold,
                  fontSize: 28),
            ),
          ),
        ],
      ),