当前位置: 首页 > 知识库问答 >
问题:

无法替换表列中的值

贺兴昌
2023-03-14

无法在表列中发送值。当我试图使用Selenium在列中插入值时,我得到了不同的错误。

>

WebElement.clear();
WebElement.sendKeys("value");

  (or)

WebElement.sendKeys(Keys.DELETE);
WebElement.sendKeys("value");

然后单击并编辑该值。

Actions actions = new Actions(getWebDriverEx());
WebElement TableColumn = Driver.findElement(By.id("element"));
actions.moveToElement(TableColumn);
actions.click().build().perform();
actions.sendKeys(Keys.BACK_SPACE+b+b);
actions.sendKeys("value");

传递的值未插入表列中。但是我可以单击Tables列。我的考试通过了。

然后尝试设置值。它显示超时的错误。

 WebElement.sendKeys(Keys.DELETE);
 WebElement.sendKeys("15000");

我再次使用div/span组合作为XPath,并编辑了该值。但这并没有反映在表中。

JavascriptExecutor js = (JavascriptExecutor) getDriver();
js.executeScript("document.getElementById('element').innerHTML="+15000); 

在这里我没有得到任何错误。但保存后未反映该值。

我给元素添加了各种格式。

  1. div/[id]

HTML:

<div id="element" class="tables_second_column">
    <div class="class_name">
        <div class="class_name">
            <div class="class_name"><span>5000</span></div>
        </div>
    </div>
</div>

共有3个答案

吕俊才
2023-03-14

根据您共享的超文本标记语言,表列位于

driver.findElement(By.xpath("//div[@id='element']/div[@class='class_name']/div[@class='class_name']/div[@class='class_name']/span[text()='5000']")).clear();    
driver.findElement(By.xpath("//div[@id='element']/div[@class='class_name']/div[@class='class_name']/div[@class='class_name']/span[text()='5000']")).sendKeys("15000");

正如你提到的,在跨度中传递的文本是不可预测的,所以我们简单地省略子句[text()='5000']。由于您提供了一个示例超文本标记语言与示例类名称,我构建了一个几乎绝对的xpath。所以我们的代码将是:

driver.findElement(By.xpath("//div[@id='element']/div[@class='class_name']/div[@class='class_name']/div[@class='class_name']/span")).clear();    
driver.findElement(By.xpath("//div[@id='element']/div[@class='class_name']/div[@class='class_name']/div[@class='class_name']/span")).sendKeys("15000");
邢璞
2023-03-14

这应该足够了

WebElement textBox = driver.findElement(By.xpath("//span[text()='5000']"));
textBox.clear();
textBox.sendKeys("");
textBox.sendKeys("15000");

我确实发送了一个空的空格来激活文本框,因为有时DOM可能不会立即反映,因为这个元素是安静嵌套的。

姚洲
2023-03-14

试试下面的,它对我有用:

js = "document.querySelector('#element .class_name .class_name .class_name>span').innerHTML = '15000';"
driver.execute_script(js)

希望对你有帮助!

 类似资料:
  • 问题内容: 我有一个列表,我想用condition()返回True的None替换值。 例如,如果条件检查bool(item%2)应该返回: 最有效的方法是什么? 问题答案: 使用列表理解来构建新列表: 您可以根据需要修改原始列表,但实际上并不能节省时间: 以下是(Python 3.6.3)演示非节省时间的时间: 和Python 2.7.6计时:

  • 问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是:

  • 问题内容: 原始列表将转换为正常。为什么原始列表的列表不能转换为的列表? 背景故事 (以减轻xy问题): 我正在使用return的API 。我碰巧知道它一直都是。我计划循环并构建自己的循环,但是我在尝试编写时试图修复(但不禁止)原始类型编译器警告。 我试过了: 但是这些会导致类型不匹配错误。 有趣的是,这没有给出警告或错误: 问题答案: // #1 (does compile) List raw

  • 问题内容: 我想用另一个子列表替换list中的一个子列表。像这样: 可以说我想要一个像这样的子列表: 并替换为 所以最终结果将是 有什么建议? 问题答案: 希望能有所帮助

  • 我有一个配置单元表保存在ORC文件中,这是“create”命令中的定义: 我想从末尾删除一个列,所以我尝试了“alter table-replace columns”命令,在这里我没有写列名--但是得到了这个错误:

  • 问题内容: 我得到了这个清单: 我想用一些与之相似的奇异值代替,从而得到一个新的清单: 问题答案: 这些称为列表推导。