首页 > 解决方案 > 无法使用 Selenium 在 LinkedIn 中定位元素

问题描述

我正在尝试使用 Selenium 编写我的第一个程序,该程序登录到我的个人资料,然后搜索特定的人或公司。一切正常,直到我想从搜索结果中输入个人资料。我的代码在这里

 public static void main(String args[]){

   ChromeDriverManager.getInstance(DriverManagerType.CHROME).setup();

   WebDriver driver = new ChromeDriver();

   final String username = "username";
   final String password = "password";

   driver.get("https://www.linkedin.com/");
   driver.manage().window().maximize();

   driver.findElement(By.xpath("/html/body/nav/section[2]/form/div[1]/div[1]/input"))
           .sendKeys(username);

   driver.findElement(By.xpath("/html/body/nav/section[2]/form/div[1]/div[2]/input"))
           .sendKeys(password);

   driver.findElement(By.xpath("/html/body/nav/section[2]/form/div[2]/button"))
           .click();

   driver.findElement(By.xpath("//*[@id=\"ember31\"]/input"))
           .sendKeys("Bill Gates", Keys.ENTER);

   WebElement element = driver.findElement(By.xpath("//*[@id=\"ember503\"]/span/span[1]/span[1]"));
   element.click();
}

它给了我错误Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="ember503"]/span/span[1]/span[1]"}

所以,首先我尝试了不同的方法xpaths,但都没有奏效。cssSelector然后我仍然没有尝试。然后我尝试了这个

  WebDriverWait wait = new WebDriverWait(driver, 10);
  wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//[@id=\"ember503\"]/span/span[1]/span[1)));

并得到另一个错误Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for element to be clickable: By.xpath: //*[@id="ember503"]/span/span[1]/span[1] (tried for 10 second(s) with 500 milliseconds interval)

所以我发现 selenium 无法找到每一个需要时间加载到页面上的元素。你能帮我理解我在哪里犯了错误吗?

标签: javaseleniumtesting

解决方案


即使搜索完全相同,LinkedIn 上的 XPath 也会在每次搜索后发生变化。

最高结果优先搜索

//*[@id="ember2258"]/span/span/span[1]

最高结果第二次搜索

//*[@id="ember2460"]/span/span/span[1]

解决此问题的一种方法是复制完整的 XPath,因为它应该保持不变,即它是一个更长的字符串,但它可以工作。

第一次搜索和第二次搜索结果是完整的 XPath。 /html/body/div[6]/div[4]/div[3]/div/div[2]/div/div[2]/div/div/div/div/ul/li[1]/div/div/div[2]/a/h3/span/span/span[1] /html/body/div[6]/div[4]/div[3]/div/div[2]/div/div[2]/div/div/div/div/ul/li[1]/div/div/div[2]/a/h3/span/span/span[1]


推荐阅读