在带有 Java 的 Selenium 中使用 JavaScriptExecutor - 它获取值但不在字段中显示它
Using JavaScriptExecutor in Selenium with Java - It takes the value but does not display it in the field
由于我在自动化方面所做的一些事情,我试图将数字保留为整数,将文本保留为字符串类型等。当它们是整数时,WebDriver 不会“发送密钥”,所以我使用 javascript 来完成。我做的第一个是信用卡最后 4 位字段,我用这行代码成功了:
jse.executeScript("document.getElementById('PaymentInfo_CCLast4Digits').setAttribute('value', '" + lastFour + "')");
如您所见,通过开发工具和firld,一切都应该如此。
现在,我还有一个名为“数量”的字段。这是它的 jse 代码:
jse.executeScript("document.getElementById('Quantity').setAttribute('value', '" + productQuantity + "')");
事情是这样的:
现在,如您所见,该值为 324,但它不会显示在数量字段中。但是,如果我将变量类型更改为字符串,并通过普通的 webdriver 传递它:
driver.findElement(By.id("Quantity")).sendKeys(productQuantity);
然后它的行为符合预期:
有谁知道为什么会这样?以下是我在与 jse 一起使用的 CC 字段的最后 4 个和不与 Quantity 字段一起使用时看到的差异:
1) 最后 4 个抄送字段是 "type = text",其中数量字段是 "type = number"
2) Quantity 字段有向上和向下的小箭头,大概是因为它是 type = number
还有什么我想念的吗?有没有其他人对此有足够的经验来理解为什么当我用 jse 发送它时 324 没有出现在数量字段中,尽管开发工具显示该值确实是 324 并且当我发送它时它确实显示了Webdriver 作为字符串?
非常感谢!
斯科特
有趣!!
你能试试吗
jse.executeScript("document.getElementById('Quantity').value='324';");
我已经在测试页上试过了,对我来说,上面的代码和 setAttribute(如您所用)也工作正常。在这两种情况下,“324”都应转换为数字。
希望它对你有用。
由于我在自动化方面所做的一些事情,我试图将数字保留为整数,将文本保留为字符串类型等。当它们是整数时,WebDriver 不会“发送密钥”,所以我使用 javascript 来完成。我做的第一个是信用卡最后 4 位字段,我用这行代码成功了:
jse.executeScript("document.getElementById('PaymentInfo_CCLast4Digits').setAttribute('value', '" + lastFour + "')");
如您所见,通过开发工具和firld,一切都应该如此。
现在,我还有一个名为“数量”的字段。这是它的 jse 代码:
jse.executeScript("document.getElementById('Quantity').setAttribute('value', '" + productQuantity + "')");
事情是这样的:
现在,如您所见,该值为 324,但它不会显示在数量字段中。但是,如果我将变量类型更改为字符串,并通过普通的 webdriver 传递它:
driver.findElement(By.id("Quantity")).sendKeys(productQuantity);
然后它的行为符合预期:
有谁知道为什么会这样?以下是我在与 jse 一起使用的 CC 字段的最后 4 个和不与 Quantity 字段一起使用时看到的差异:
1) 最后 4 个抄送字段是 "type = text",其中数量字段是 "type = number"
2) Quantity 字段有向上和向下的小箭头,大概是因为它是 type = number
还有什么我想念的吗?有没有其他人对此有足够的经验来理解为什么当我用 jse 发送它时 324 没有出现在数量字段中,尽管开发工具显示该值确实是 324 并且当我发送它时它确实显示了Webdriver 作为字符串?
非常感谢!
斯科特
有趣!! 你能试试吗
jse.executeScript("document.getElementById('Quantity').value='324';");
我已经在测试页上试过了,对我来说,上面的代码和 setAttribute(如您所用)也工作正常。在这两种情况下,“324”都应转换为数字。
希望它对你有用。