繁体   English   中英

无法在 selenium java 中使用类名找到元素

[英]cant find the element using classname in selenium java

我正在使用 selenium 框架来测试我自己的网站。 我试图点击使用锚标记的特定图标。 我有 java selenium 代码可以点击但无法点击。 尝试了许多 xpath、css 选择器、class 名称和名称。 但没有奏效。 但是可以运行脚本并且它正在打开 chrome 并导航到输入的域但是点击选项不起作用这是我网站的代码

上面的代码我需要点击 nav-twitter class 锚点选项。 这将在 chrome 中创建另一个选项卡以显示我的 twitter 页面。 但在运行应用程序后,它只是导航到页面域,没有任何作用。

Selenium 代码片段

所以,这是我添加的代码。 直到最大化一切正常但不是锚标记

错误图片

在 chrome 中运行脚本时出现这种错误。 请任何人让我知道我在这里哪里错了,或者有什么办法可以让它发生。 提前致谢。

每当您启动 webdriver 时,请确保添加隐式等待语句,以便它可以在查找对象之前等待一段时间。 在 chromedriver 初始化后立即添加以下语句,您的代码应该可以正常工作。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

您的定位器略有偏差。 在您的代码中,您正在寻找一个twitter元素,该元素不存在。 相反,您可以使用以下任一定位器策略

  • 使用cssSelector

     WebElement navTwitter = driver.findElement(By.cssSelector("a.nav-twitter[name='twitter']")); navTwitter.click();
  • 使用xpath

     WebElement navTwitter = driver.findElement(By.xpath("//a[@class='nav-twitter' and name='twitter']")); navTwitter.click();

您在这里使用了错误的选择器/定位器。 “twitter”不是标签名,标签名是小于号到第一个空格或大于号的值。 div、p、a、span 等词是标签名称。

所以这里 a 是标签名称和名称,class,href 是您可以在形成 xpath 或 css 定位器时使用的属性。 所以你可以在这里创建多个定位器:

  1. 通过使用 class 名称属性

    By.className("nav-twitter");
  2. 通过使用名称属性创建 xpath

     By.xpath("//a[@name='twitter']");]
  3. 通过使用 class 属性创建 xpath

     By.xpath("//a[@class='nav-twitter']");
  4. 通过使用 class 属性创建 css 定位器。

     By.cssSelector("a[class*='nav-twitter']");
  5. 通过在名称为 class 的 css 选择器中使用点符号

    By.cssSelector("a.nav-twitter");

同样,您也可以使用名称创建 css 选择器。 由于有多个标签,所以你不能直接使用标签,如果你想使用By.tagName("a")那么它会点击页面上的第一个标签

注意:我们在形成 css 选择器时使用点号与 class 名称和 Hash (#) 与 Id 名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM