Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Selenium中,sendKeys()和setValue()方法到底有什么不同?_Selenium_Selenium Webdriver_Sendkeys_Setattribute_Setvalue - Fatal编程技术网

在Selenium中,sendKeys()和setValue()方法到底有什么不同?

在Selenium中,sendKeys()和setValue()方法到底有什么不同?,selenium,selenium-webdriver,sendkeys,setattribute,setvalue,Selenium,Selenium Webdriver,Sendkeys,Setattribute,Setvalue,我两者都用过 WebElement.sendKeys('') 及 以便在字段中输入文本。绝大多数情况下,它们的行为似乎是一样的,但我发现有一些情况下setValue()起作用,而sendKeys()不起作用 我在Selenium文档中只能找到sendKeys()“更准确地模拟用户输入”,然后是setValue()。有人知道引擎盖下到底发生了什么吗?sendKeys() 是用于模拟键入元素的Java方法,可以设置其值 定义: void sendKeys(java.lang.CharSeque

我两者都用过

WebElement.sendKeys('') 

以便在字段中输入文本。绝大多数情况下,它们的行为似乎是一样的,但我发现有一些情况下
setValue()
起作用,而
sendKeys()
不起作用

我在Selenium文档中只能找到
sendKeys()
“更准确地模拟用户输入”,然后是
setValue()
。有人知道引擎盖下到底发生了什么吗?

sendKeys() 是用于模拟键入元素的Java方法,可以设置其值

  • 定义:

    void sendKeys(java.lang.CharSequence... keysToSend)
        Use this method to simulate typing into an element, which may set its value.
    
    Parameters:
        keysToSend - character sequence to send to the element
    
    Throws:
        java.lang.IllegalArgumentException - if keysToSend is null
    
  • 用法:

    driver.findElement(By.id("identifierId")).sendKeys("C.Peck@stackoverflow.com");
    
但是Java中没有
setValue()
方法,最接近的匹配似乎是
setAttribute()
JavaScript方法


setAttribute() 是设置指定元素属性值的JavaScript方法。如果该属性已经存在,则更新该值;否则,将添加具有指定名称和值的新属性

  • 语法:

    Element.setAttribute(name, value);
    
  • 例如:

    • HTML:

      <button>Hello World</button>
      
  • 通过Java
    executeScript()
    实现:


用户要求的是
setValue()
而不是
setAttribute()
setValue()
是在与
MobileElement
交互时提供的,在功能上与
sendKeys
<button>Hello World</button>
var b = document.querySelector("button"); 
b.setAttribute("name", "helloButton");
b.setAttribute("disabled", "");
((JavascriptExecutor)driver).executeScript("document.getElementById('elementID').setAttribute('attribute_name', 'new_value_for_element')");