我们如何在senkeys + selenium中输入字符

时间:2017-04-22 06:00:09

标签: java arrays selenium-webdriver

String str ='here i am entring some string'

我试图在“base64”

的帮助下加密字符串
byte[] encode = Base64.encodeBase64(str.getBytes());    
driver.findElement(By.xpath(".//[@id='login_div']/form/div[2]/p[2]/input")).sendKeys(encode);

但是在sendkeys他们不接受(编码)值,他们抛出了错误。

2 个答案:

答案 0 :(得分:1)

它会抛出编译时错误,因为" Sendkeys"方法只能接收字符序列(char值的可读序列)。因此,如果您的要求是将该字节数组发送到该特定的文本框/文本字段,那么请尝试使用这段代码。

char序列的引用:https://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html

driver.findElement(By.id(".//[@id='login_div']/form/div[2]/p[2]/input")).sendKeys(encode.toString());

这里我将该字节数组作为字符串发送。如果有任何问题,请告诉我。

答案 1 :(得分:-1)

您所做的一切都是正确的,但我们需要在将字符串发送到selenium sendkeys之前对其进行解密。我创建了一个单独的帮助程序类来执行加密和解密,如下所示。

public class Helper {

/**
 * Static helper method to Encrypt a string
 * @param word - Pass the word that needs to be encrypted
 * @return - Returns the encrypted String for the word
 */

public static String encrypter(String word)
{
    String encoded = Base64.getEncoder().encodeToString(word.getBytes());
    return encoded;
}

/**
 * Static helper method to decode the encrypted String
 * @param word - Pass the encrypted String which needs to be encrypted
 * @return - Returns the decrypted String
 */
public static String decrypter(String word)
{
    byte[] decoded = Base64.getDecoder().decode(word.getBytes());
    return new String(decoded);

}}

现在在我们的硒中,我们可以使用类似的东西。

String str = "Enter the String to Encrypt";
String encoded = Helper.encrypter(str);
driver.findElement(By.xpath(".//[@id='login_div']/form/div[2]/p[2]/input")).sendKeys(Helper.decrypter(encoded));

注意 - 我使用的是java 1.8.0_121。在以前的版本中,Base64类方法实现可能略有不同,但概念是相同的。