java - Selenium Webdriver 元素识别

标签 java selenium selenium-webdriver webdriver

您好,我是 Selenium Webdriver 的新手。

我已经拿了这个website我正在尝试单击注册链接。我编写了以下代码。

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.stepintohealth.qa");
driver.findElement(By.linkText("Register")).click();

在执行代码时,它抛出“未找到元素”异常。我在 seleniunm IDE 中尝试过同样的操作,没有任何问题。我也验证了 iframes,但注册链接不在 iframes 中。

最佳答案

欢迎来到Selenium的世界。您面临的通常是元素等待/查找问题。我添加了explicit在执行单击之前,请等待确保该元素存在。

driver = new FirefoxDriver();
driver.get("http://www.stepintohealth.qa");

By byCss = By.cssSelector(".right1.navmenu a.register");
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(byCss ));
myDynamicElement.click();

需要记住的几件事:

  1. 您不想将隐式等待和显式等待混合在一起,因为这可能会导致性能问题。不建议这样做。
  2. 选择器对于唯一地查找元素非常重要。我倾向于尽可能避免 LinkTextid 应该始终是您的首选。如果可以的话,尝试使用 nameclasNamecssSelectorxpath。在这种情况下,className 的效果不太好。使用 cssSelector 进行测试并完成了它应该做的事情。请参阅this了解更多信息。

关于java - Selenium Webdriver 元素识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510947/

相关文章:

java - action.keyDown(Keys.CONTROL).sendKeys ("a").keyUp(Keys.CONTROL).build() 在 Windows 上有效,但在 Linux 上无效

java - 使用 Java 连接 AWS aerospike 实例

Java TreeMap Nested ,clear 删除所有数据,而 new 则不

testing - Selenium WebDriver : How to wait for iframes to load completely? 可以点击 iframe 元素文本框 id = “div_4_1_2_1_1-lnk”

javascript - 如何使用 Python Selenium 单击没有 ID 或 HTML 的按钮?

javascript - 使用 Protractor 测试页面上的所有链接

python - 为什么我的程序返回 "No review v1"而不是返回有评论的产品的平均评论?(网络抓取,python)

java - 使用 Selenium 迭代表中的链接列表 - 第一次迭代工作正常,然后失败

java - AlertDialog 生成器 OnItemSelectedListener

java - JSTL 标签从数据类打印在 JSP 中