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

2024-09-30 01:28:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试让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);

但不管出于什么原因,它总是在XPathID部分返回无效语法错误

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


Tags: 方法id密码inputby站点seleniumusername
1条回答
网友
1楼 · 发布于 2024-09-30 01:28:49

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

相关问题 更多 >

    热门问题