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