我需要使用 Selenium WebDriver (Java API) 单击动态生成的元素。我正在等待这个元素与 WebDriverWait 一起出现,然后单击它。此单击成功,但随后单击不同的静态元素会冻结整个测试。这是代码:
webDriver.get(alfrescoURL + "/share/page/create-document");
WebDriverWait wait = new WebDriverWait(webDriver, 10);
WebElement documentTypeList = webDriver.findElement(By.id("template_x002e_create-document_x002e_create-document_x0023_default_documenttype-selected-form-button-button"));
documentTypeList.click();
WebElement listItem = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("yui-gen100")));
listItem.click();
// Choosing to create in new project
WebElement projectLink = webDriver.findElement(By.id("template_x002e_create-document_x002e_create-document_x0023_default_projecttype-entry1"));
projectLink.click();
documentTypeList.click()
打开一个下拉列表,listItem.click()
选择一个项目,projectLink.click()
在单选按钮组中进行选择。测试静默冻结projectLink.click()
。看起来这click()
无限地等待由于某种原因发生的页面重新加载,而它不应该。(选择项目后列表消失是由不发出任何 AJAX 请求的 javascript 完成的。)
我认为有一些关于click()
阻塞的东西我不明白。它在它的 javadoc 中说,它仅在导致页面加载时才尝试阻止。尽管如此,由于某种原因,我在这里遇到了障碍。
如果我在此之前插入一个线程睡眠,projectLink.click()
那么测试工作正常。它与我得到一个无限块的假设一致click()
。
提前致谢。