【发布时间】:2017-11-28 00:42:48
【问题描述】:
http://mail.google.com的新JS启用页面无法获取密码输入字段的ID。但是,我从电子邮件 ID 页面导航到它的 ID - identifierID 。
如何获取密码字段的ID?
【问题讨论】:
-
你能粘贴 HTML 吗?
标签: javascript selenium webdriver selenium-chromedriver
http://mail.google.com的新JS启用页面无法获取密码输入字段的ID。但是,我从电子邮件 ID 页面导航到它的 ID - identifierID 。
如何获取密码字段的ID?
【问题讨论】:
标签: javascript selenium webdriver selenium-chromedriver
如果 Id 使用 name 属性来获取字段的访问权限。
document.getElementsByName("password")[0];
它会给你密码输入元素。
<input type="password" class="whsOnd zHQkBf" jsname="YPqjbf" autocomplete="current-password" spellcheck="false" tabindex="0" aria-label="Enter your password" name="password" autocapitalize="off" autocorrect="off" dir="ltr" data-initial-dir="ltr" data-initial-value="">
【讨论】:
gmail.findElement(By.name("Password")).sendKeys("xyz");
请查找更新后的代码:
代码:
driver.manage().window().maximize();
driver.get("http://www.gmail.com");
WebElement elementid = driver.findElement(By.id("identifierId"));
elementid.sendKeys("");
WebElement elementnxt = driver.findElement(By.id("identifierNext"));
elementnxt.click();
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@type='password']")));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@type='password']")));
WebElement elementpwd = driver.findElement(By.xpath("//input[@type='password']"));
elementpwd.sendKeys("123");
我已经验证了它。如果这不起作用,请告诉我。
【讨论】:
WebElement elementpwd = driver.findElement(By.xpath("//div[@id='password']//input"));
使用组合输入元素和具有内部文本的 div
<div jsname="YRMmle" class="AxOyFc snByac" aria-hidden="true">Enter your password</div>.
同样在点击正确的元素时,父元素会发生变化,这使您可以再次找到该元素并发送值。
您可以使用 CssSelector 或 Xpath 轻松实现此目的。但是您的 Google 肯定会经常更改这一点。
【讨论】:
尝试使用 JavaScript 设置字段的值
作为
JavascriptExecutor js = (JavascriptExecutor) 驱动程序;
js.executeScript("var elements = document.getElementsByName('password');elements[0].setAttribute('value', '123');");
【讨论】: