在这里,我们将给大家分享关于如何通过Selenium和C#保留通过SendKeys的知识,让您更了解方法发送的字符序列的本质,同时也会涉及到如何更有效地java–如何通过seleniumwebdriv
在这里,我们将给大家分享关于如何通过Selenium和C#保留通过SendKeys的知识,让您更了解方法发送的字符序列的本质,同时也会涉及到如何更有效地java – 如何通过selenium webdriver禁用Skype扩展、Selenium sendKeys不发送所有字符、selenium sendkeys方法总结、selenium 在使用 sendkeys()时出现的问题的内容。
本文目录一览:- 如何通过Selenium和C#保留通过SendKeys()方法发送的字符序列(selenium send keys)
- java – 如何通过selenium webdriver禁用Skype扩展
- Selenium sendKeys不发送所有字符
- selenium sendkeys方法总结
- selenium 在使用 sendkeys()时出现的问题
如何通过Selenium和C#保留通过SendKeys()方法发送的字符序列(selenium send keys)
Selenium c#在“我的测试网站”的文本框中输入数据时,光标位置设置为“中”,并且输入的数据类似于 3421, 而不是正确的 1234
。
谁能建议一个很好的方法来解决这个问题?
我试图使用按HOME键,但没有用。
答案1
小编典典在缺乏相关 HTML的 情况下,很难预测通过方法发送的 字符序列 的顺序顺序的持久性背后的实际问题。SendKeys()
__
但是,如果 AUT(被测应用程序)
是基于JavaScript,Angular或ReactJS的,则根据_最佳实践, 您需要诱导 _WebDriverWait 来使所需 元素可单击 ,然后需要调用Clear()
方法,最后调用SendKeys()
方法如下:
- C#:
IWebElement textBoxElement = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("xpath_of_HOME_key_button"))); textBoxElement.Click(); textBoxElement.Clear(); textBoxElement.SendKeys("1234");
java – 如何通过selenium webdriver禁用Skype扩展
解决方法
>转到控制面板
>卸载“Skype点击通话”
>重新运行你的硒鼓webdriver测试.
结果:您将看不到Skype窗口.
Selenium sendKeys不发送所有字符
我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子:
public void enterCustomerDetails() { txtFirstName.sendKeys("Joh201605130947AM"); txtSurname.sendKeys("Doe201605130947AM"); txtEmail.sendKeys("johndoe@gmail.com"); }
我也尝试使用executeScript。没用 它可以输入完整的字符,但表单认为该字段为空。
public void forceSendKeys(WebElement element, String text){ if (element != null) ((JavascriptExecutor) this.webDriver).executeScript("arguments[0].value=arguments[1]", element, text);}public void enterCustomerDetails() { forceSendKeys(txtFirstName, "Joh201605130947AM"); forceSendKeys(txtSurname, "Doe201605130947AM"); forceSendKeys(txtEmail, "johndoe@gmail.com"); }
我还尝试在.sendKeys之前使用.click()并增加睡眠时间。他们也没有工作。
它有效,但这意味着我必须将所有代码从sendKeys重写为新函数:
public void sendChar(WebElement element, String value){ element.clear(); for (int i = 0; i < value.length(); i++){ char c = value.charAt(i); String s = new StringBuilder().append(c).toString(); element.sendKeys(s); } }public void enterCustomerDetails() { sendChar(txtFirstName, "Joh201605130947AM"); sendChar(txtSurname, "Doe201605130947AM"); sendChar(txtEmail, "johndoe@gmail.com"); }
如果你们知道更好的方法,请帮忙!:)
答案1
小编典典我认为这是由Angular2问题引起的https://github.com/angular/angular/issues/5808
当输入事件到达得太快时,Angular无法处理它们。
解决方法是,您需要发送单个字符,每个字符之间的延迟很小。
selenium sendkeys方法总结
SendKeys可以给element做输出,也可以作为动作快捷键,比如ctrl c ,ctrl v ,.alt, enter等
当作为快捷键时,这些字符按需要转换格式。
当作为输入时,每个按键由一个或多个字符表示,例如输入"a",则表示给当前元素输入字符a,
当需要输入多个字符时,则多个字段连接在一起作为输入,例如输入"abc"。
有一些字符由特殊用途,例如,+,^, %, ~, () 这些字符都时用作特殊用途,当需要这些字符本来的值时,可以使用
{}包括在其中,如{+}表示字符+, {%}表示百分号字符
方括号[] 本身不具有特殊意义但是使用时必须放在大括号中{[},{]},
当需要使用大括号时本来的值时,也需要放在大括号内,如{{}, {}}
当需要使用按键功能,例如浏览器在执行某一步后需要按一下回车,需要对按键的代码做特殊处理,
例如按回车键,则sendKeys的内容则应该为{ENTER} 或者 ~
例如需要ESC返回键,则sendkeys的内容应该为 {ESC}
其他需要转换的按键有:
SHIFT +
CTRL ^
ALT %
BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} 或 {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
如果需要在按键组合键的时候,例如 按 shitf键的同事按下s键,则可以使用括号包含在里面
如 +s 表示按下shift键的同时按一下s键,+sc表示先同时按下shift和s键,然后在按一下c键,+(sc)表示同时按下shift, s, c键
如果需要重复按下某个键多少次,表示形式为{key number},这里key 和 number 之间有一个空格, 如 {c 10}表示连续
按下10次c键,{+ 10}表示连续按10次shift键
selenium 在使用 sendkeys()时出现的问题
代码: driver.findElement (By.id ("kw")).sendKeys ("123");
出现的这个问题:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method sendKeys(CharSequence[]) in the type WebElement is not applicable for the arguments (String)
at selenium22.T1.main(T1.java:24)
解决方法searchField.sendKeys(new String[] { "sample" });
将sendKeys中的内容换成上面的内容。
今天关于如何通过Selenium和C#保留通过SendKeys和方法发送的字符序列的分享就到这里,希望大家有所收获,若想了解更多关于java – 如何通过selenium webdriver禁用Skype扩展、Selenium sendKeys不发送所有字符、selenium sendkeys方法总结、selenium 在使用 sendkeys()时出现的问题等相关知识,可以在本站进行查询。
本文标签: