java - 无法使用 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 无法找到每一个需要时间加载到页面上的元素。你能帮我理解我在哪里犯了错误吗?
解决方案
即使搜索完全相同,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]
推荐阅读
- c# - Azure Functions 不发布 appsettings.prod.json 文件
- python - 如何使用条件将数据框导出到 csv?
- apache-spark - Delta Lake 独立于 Apache Spark?
- python - 如何在 PyQt5 / PySide2 中从一个类访问另一个类的属性
- powershell - 为“Internet Explorer”GPO 对象(本地计算机策略)下的所有文件夹和键编辑/设置值“未配置”
- flutter - Flutter:当用户关注它时,ToggleButtons 焦点颜色不起作用
- r - 如何确定导致 R 函数抖动的原因?
- python - 游戏 Ursina 的第三人称视角
- c++ - WinDbg 在堆上查找所有不使用继承的 X 类型的 C++ 对象(无 vftable)
- python - 显示 SQLAlchemy 的当前/活动引擎