GVKun编程网logo

如何通过Selenium和C#保留通过SendKeys()方法发送的字符序列(selenium send keys)

10

在这里,我们将给大家分享关于如何通过Selenium和C#保留通过SendKeys的知识,让您更了解方法发送的字符序列的本质,同时也会涉及到如何更有效地java–如何通过seleniumwebdriv

在这里,我们将给大家分享关于如何通过Selenium和C#保留通过SendKeys的知识,让您更了解方法发送的字符序列的本质,同时也会涉及到如何更有效地java – 如何通过selenium webdriver禁用Skype扩展、Selenium sendKeys不发送所有字符、selenium sendkeys方法总结、selenium 在使用 sendkeys()时出现的问题的内容。

本文目录一览:

如何通过Selenium和C#保留通过SendKeys()方法发送的字符序列(selenium send keys)

如何通过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扩展

java – 如何通过selenium webdriver禁用Skype扩展

每当我启动Firefox浏览器时,都会启用Skype.如何通过Selenium& Java的?

解决方法

这是解决方案(我以这种方式解决了这个问题):

>转到控制面板
>卸载“Skype点击通话”
>重新运行你的硒鼓webdriver测试.

结果:您将看不到Skype窗口.

Selenium sendKeys不发送所有字符

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方法总结

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()时出现的问题

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()时出现的问题等相关知识,可以在本站进行查询。

本文标签: