在我的应用程序中,我有一个电子邮件字段,我正在使用 sendkeys 发送电子邮件地址,但不是 sendkeys selenium 插入剪贴板中的值。有人遇到过这个问题吗?
代码:
WebElement email=driver.findElement(By.xpath("//div[@class='auth-container']//input[@type='text']");
email.sendKeys("sample@sample.com")
因为 Id 是动态的,所以我从父容器中获取了 xpath
最佳答案
在 Node.js javascript 中,在匈牙利语键盘上,sendKeys 中的 @ 符号已替换为剪贴板的内容。如果您尝试将“@”宽度替换为其 unicode 值“\u0040”,结果是相同的,sendKeys 已替换为剪贴板的内容,即使尝试使用棘手的 Key.chord( Key.ALT, "v", Key.NULL ) 形式,它什么都不做。
// if clipboard contains XXX
WebElement email=driver.findElement(By.xpath("//div[@class='auth-container']//input[@type='text']");
email.sendKeys("sample@sample.com")
// result: field content is sampleXXXsample.com
如果你在剪贴板上加上@符号,效果很好,但你不能保证测试自动化中剪贴板的内容。有一种方法可以将 key 发送到事件项。
我会避免用javascript填充字段,如上所述,因为javascript直接填充它,不关心字段状态,即使字段不活动也用值填充它,不触发事件等,javascript是蛮力填充字段。
发送。 key 。有一个 npm 包。它是 powershell 发送 key 的包装器,因此仅适用于 Windows。
npm install -g sendkeys
和测试代码:
const sendkeys = require( 'sendkeys');
WebElement email=driver.findElement(By.xpath("//div[@class='auth-container']//input[@type='text']");
email.sendKeys("sample")
// result: cursor is in the field, field contains 'sample'
sendkeys.sync( "@sample.com" )
// result: field content is 'sample@sample.com'
关于selenium - 而不是 sendkeys 最后从剪贴板复制的项目被输入到元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59317143/