javascript - Selenium:输入样式为 ="display: none;"的文本字段

标签 javascript python selenium selenium-webdriver display

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

<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 部分返回无效语法错误。

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

最佳答案

Selenium将无法发送 <input> 中的字符序列字段 style属性设置为 "display: none;"

但是,您标记了 但你的代码块位于

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>您必须删除 style 字段属性设置为 "display: none;"您可以使用以下任一 Locator Strategies :

  • 使用 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)
    

关于javascript - Selenium:输入样式为 ="display: none;"的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65412902/

相关文章:

javascript - 在选项卡式模式对话框(覆盖)中创建菜单

javascript - 在 Intern 中加载项目目录外的依赖项

java - 使用 jUnit、Selenium Webdriver 打印有关测试失败的有意义的消息并继续执行脚本

python - 正确的xpath是什么?

python - 如何根据 Pandas DataFrame 中的条件添加每组具有重复值的新列?

selenium - 如何忽略失败案例并继续下一个值

javascript - 使用 jQuery 在表格上区分大小写的实时搜索

javascript - 为什么在生成器中调用函数运行得更快?

python - 使用inspect模块获取继承对象的名称

python - 从 RAM 转储中获取 python 脚本