如何设置“值”以使用 selenium 输入 Web 元素?

Posted

技术标签:

【中文标题】如何设置“值”以使用 selenium 输入 Web 元素?【英文标题】:How to set "value" to input web element using selenium? 【发布时间】:2016-05-09 16:50:59 【问题描述】:

我的代码中有如下所示的元素:

<input id="invoice_supplier_id" name="invoice[supplier_id]" type="hidden" value="">

我想设置它的值,所以我用它的 xpath 创建了一个 web 元素:

 val test = driver.findElements(By.xpath("""//*[@id="invoice_supplier_id"]"""))

但现在我没有看到设置值的选项...

【问题讨论】:

如果您使用 ID,则应使用适当的 By-Locator:By.id("invoice_supplier_id") 您当前正在收集 WebElement 列表。您将需要从列表中提取 WebElement,或者只查找 WebElement 本身。您还需要在 Selenium 与之交互之前取消隐藏元素。 【参考方案1】:

使用findElement 而不是findElements

driver.findElement(By.xpath("//input[@id='invoice_supplier_id'])).sendKeys("your value");

driver.findElement(By.id("invoice_supplier_id")).sendKeys("value", "your value");

或使用 JavascriptExecutor

WebElement element = driver.findElement(By.xpath("enter the xpath here")); // you can use any locator
 javascriptExecutor jse = (JavascriptExecutor)driver;
 jse.executeScript("arguments[0].value='enter the value here';", element);

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

或(在 javascript 中)

driver.findElement(By.xpath("//input[@id='invoice_supplier_id'])).setAttribute("value", "your value")

希望对你有帮助:)

【讨论】:

向隐藏元素发送密钥? 我在这里遇到了同样的问题。但是 WebElement 中没有这样的setAttribute 方法。还有其他建议吗? @NarayanSubedi,sendKeys 方法对我有用 driver.findElement(By.id("elementId")).sendKeys("value", "new value"); 尝试使用 send_keys 代替 sendKeys 对此方法有问题的朋友可以试试sqa.stackexchange.com/questions/3387/…【参考方案2】:
driver.findElement(By.id("invoice_supplier_id")).setAttribute("value", "your value");

【讨论】:

【参考方案3】:

正如 Shubham Jain 所说,这对我有用:driver.findElement(By.id("invoice_supplier_id")).sendKeys("value"‌​, "new value");

【讨论】:

以上是关于如何设置“值”以使用 selenium 输入 Web 元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python Selenium 在文本框(输入)中定位和插入值?

selenium

如何正确设置Java / Selenium配置以运行自动化测试?

如何正确设置 Java/Selenium 配置以运行自动化测试?

如何修改placeholder样式

如何使用 Selenium 和 Python 在信用卡号字段中输入日期?