【问题标题】:How to get password input field ID of gmail wiht selenium Webdriver?如何使用 selenium Webdriver 获取 gmail 的密码输入字段 ID?
【发布时间】:2017-11-28 00:42:48
【问题描述】:

http://mail.google.com的新JS启用页面无法获取密码输入字段的ID。但是,我从电子邮件 ID 页面导航到它的 ID - identifierID

如何获取密码字段的ID?

【问题讨论】:

  • 你能粘贴 HTML 吗?

标签: javascript selenium webdriver selenium-chromedriver


【解决方案1】:

如果 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="">

【讨论】:

  • 感谢 Dinesh,我什至使用了 name 以及 name 属性。但是,没有得到预期的结果。
  • 我用过这个-gmail.findElement(By.name("Password")).sendKeys("xyz");
【解决方案2】:

请查找更新后的代码:

代码:

    driver.manage().window().maximize();
    driver.get("http://www.gmail.c‌​om"); 
    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");

我已经验证了它。如果这不起作用,请告诉我。

【讨论】:

  • 感谢@Monika 的建议,但我仍然没有得到预期的结果。我用了`WebElement elementpwd = driver.findElement(By.xpath("div[@id='password']//input")); elementpwd.sendKeys("123");`
  • 您在路径中犯了错误。请试试这个: WebElement elementpwd = driver.findElement(By.xpath("//div[@id='password']//input")); elementpwd.sendKeys("123");
  • 我按照你的建议做了。但是我的测试卡在密码字段的下一页(在输入电子邮件 ID 并单击下一步按钮后)。我可以分享可以帮助您查看的代码吗?
  • 您在 XPath 中遗漏了“//”。您的代码行是: driver.findElement(By.xpath("div[@id='password']//input")),这在 div 之前没有“//”。对于相对 xpath,您必须使用“//”。
  • 评论有误。否则我的代码行是 - WebElement elementpwd = driver.findElement(By.xpath("//div[@id='password']//input"));
【解决方案3】:

使用组合输入元素和具有内部文本的 div

&lt;div jsname="YRMmle" class="AxOyFc snByac" aria-hidden="true"&gt;Enter your password&lt;/div&gt;.

同样在点击正确的元素时,父元素会发生变化,这使您可以再次找到该元素并发送值。

您可以使用 CssSelector 或 Xpath 轻松实现此目的。但是您的 Google 肯定会经常更改这一点。

【讨论】:

  • 那么如何(不使用密码输入字段)制作gmail页面的测试用例。
  • 我们必须找到密码输入字段元素,点击密码输入字段,然后再次找到该元素并将数据发送到字段。 @Vicky
  • 已尝试使用 xpath、名称、ID 等访问相同内容。但仍无法得出解决方案。
【解决方案4】:

尝试使用 JavaScript 设置字段的值

作为

JavascriptExecutor js = (JavascriptExecutor) 驱动程序;

js.executeScript("var elements = document.getElementsByName('password');elements[0].setAttribute('value', '123');");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多