我是硒网络驱动程序的新手,我试图进行简单的登录自动化。 以下是ebay登录页面的链接: https://signin.ebay.com/
以下是用户名输入框的html代码:
<input size="40" maxlength="64" name="2045849967" id="2045849967" type="text" autocapitalize="off" autocorrect="off" placeholder="Email or username" class="fld">
&#13;
以下是密码输入框的html代码:
<input size="40" maxlength="64" name="955270437" id="955270437" type="password" autocapitalize="off" autocorrect="off" placeholder="Password" class="fld">
&#13;
以下是我的代码尝试将凯斯发送到用户名和密码输入框:
driver.findElement(By.id("2045849967")).sendKeys("blabla@gmail.com");
driver.findElement(By.id("955270437")).sendKeys("somePassword");
问题是我无法通过这些ID找到元素,因为每次加载/刷新页面时它都会发生变化。 请注意,所有ID都完全改变了。 我有什么选择来解决这个问题? 谢谢
更新 我通过找到&#39;注册表&#39;成功进入用户名框。登录页面中的元素,然后点击“标签”,但现在当我进入用户名框时,我不知道如何才能发送“关键字”信息。因为我没有真正的用户名元素。
以下是代码:
WebElement regElement = driver.findElement(By.id("regTab"));
regElement.sendKeys(Keys.TAB);
&#13;
现在我怎么能从这里继续? 我需要插入用户名,然后点击“&#39; Tab&#39;再次插入密码。 有什么选择?
答案 0 :(得分:1)
您可以使用这些
By.cssSelector("input[placeholder='Email or username']")
By.cssSelector("input[placeholder='Password']")
显然,电子邮件字段有两个匹配项,第一个是隐藏的,导致失败。你仍然可以使用这些选择器,你只需要抓住第一个定位器的第二场比赛。
driver.findElements(By.cssSelector("input[placeholder='Email or username']")).get(1).sendKeys("abc");
driver.findElement(By.cssSelector("input[placeholder='Password']")).sendKeys("abc");
答案 1 :(得分:0)
我找到了解决这个问题的方法。
WebElement regElement = driver.findElement(By.id("regTab"));
regElement.sendKeys(Keys.TAB);
WebElement currentElement = driver.switchTo().activeElement();
currentElement.sendKeys("blabla@gmail.com");
currentElement.sendKeys(Keys.TAB);
currentElement = driver.switchTo().activeElement();
currentElement.sendKeys("somePassword");
driver.findElement(By.id("sgnBt")).click();
&#13;