Selenium:使用 style="display: none;" 输入文本字段

Selenium: Input into a text field with style="display: none;"

我一直在尝试让 selenium 将我的用户名和密码输入网站,并且看到其他论坛 none 上提到的各种方法对我有用。以下是检查站点上的“用户名”字段时返回的内容:

<input type="text" id="curruserelt" value="" aria-hidden="true" style="display: none;" class="">

我尝试使用 ID 方法但无济于事,我正在尝试这种 xpath 方法:

username = "ajusingt121"
element_enter = findElement(By.xpath("//*[@id="curruserelt"]")).sendKeys(username);
element_enter.findElement(By.xpath("/html/body/input[1]")).sendKeys(username);

但无论出于何种原因,它总是在 xpath id 部分返回无效语法错误。

处理此类表单和输入数据的最佳方法是什么?

将无法在 style 属性设置为 "display: none;"[=49 的 <input> 字段中发送字符序列=].

但是,您标记了 but your code block is in

Python中你使用:

driver.find_element_by_xpath("//*[@id="curruserelt"]").send_keys(username)

Java中你使用:

driver.findElement(By.xpath("//*[@id="curruserelt"]")).sendKeys(username);

Note: However there are JavaScript hacks which can help you to achieve the same.


更新

要将字符序列发送到 <input> 字段,您必须删除设置为 "display: none;"style 属性,您可以使用以下任一方法 :

  • 使用css_selector:

    username = "ajusingt121"
    element = driver.find_element_by_css_selector("input#curruserelt[type='text']")
    driver.execute_script("arguments[0].removeAttribute('style')", element)
    driver.find_element_by_css_selector("input#curruserelt[type='text']").send_keys(username)
    
  • 使用xpath:

    username = "ajusingt121"
    element = driver.find_element_by_xpath("//input[@id='curruserelt' and @type='text']")
    driver.execute_script("arguments[0].removeAttribute('style')", element)
    driver.find_element_by_xpath("//input[@id='curruserelt' and @type='text']").send_keys(username)