无法使用Selenium在Twitter帐户中获取用户名和密码

时间:2017-06-07 19:33:05

标签: selenium twitter webdriver

我使用以下代码登录twitter

    driver.get("https://twitter.com/login/");
    driver.findElement(By.xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[1]/input")).sendKeys("viaxpath");
    driver.findElement(By.xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[2]/input")).sendKeys("viaxpath");

3 个答案:

答案 0 :(得分:0)

在Chrome中获取CSS选择器:

  1. 右键点击元素,然后选择'检查'
  2. 右键单击DevTools的DOM资源管理器中的元素
  3. 选择"复制" > "复制选择器"
    1. 或者你也可以在这里获得XPath
  4. 我可以通过从Chrome的DevTools中获取CSS Selector并在控制台中测试来输入用户名。

    document.querySelector("#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(2) > input").value = "Timothy"
    

    在(Java)Selenium中它看起来像:

    driver.findElement(By.cssSelector("#page-container > div > div.signin-wrapper > form > fieldset > div:nth-child(2) > input")).sendKeys("Timothy");
    

    您可能遇到的一个问题是您加载页面并尝试在准备好之前输入。因此,我建议在导航到页面和与输入交互之间执行explicit wait

答案 1 :(得分:0)

您提到的代码已经在使用了。您应该能够输入Twitter帐户的用户名和密码。

答案 2 :(得分:0)

以下是您的问题的答案:

您可以考虑构建一个唯一标识xpathusername字段的password,并且可以通过Selenium轻松遍历。这是你自己的代码,有一些简单的调整,可以在我的最后工作:

WebDriver driver =  new FirefoxDriver();
driver.manage().window().maximize();    
driver.get("https://twitter.com/login/");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.xpath("//div[@class='clearfix field']/input[@name='session[username_or_email]']")).sendKeys("id@domain.com");
driver.findElement(By.xpath("//div[@class='clearfix field']/input[@name='session[password]']")).sendKeys("password");

如果这回答你的问题,请告诉我。