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>
字段中发送字符序列=].
但是,您标记了 python but your code block is in java
在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)
我一直在尝试让 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>
字段中发送字符序列=].
但是,您标记了 python but your code block is in java
在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)