我正在尝试自动化测试具有响应/自适应设计的Web应用程序。
当用户使用全屏浏览器时,将根据屏幕显示尺寸显示不同的显示。
我使用全屏浏览器完全自动化了应用程序测试,但是当我尝试使用移动浏览器进行测试时,导航菜单的显示方式不同。在较小的窗口中,必须单击导航菜单将其展开,然后才能选择子菜单对象。我试图同时使用模拟器,物理设备和正常窗口,但都没有运气。
我可以毫无问题地扩展主菜单,但是,无论我尝试什么,Selenium似乎无法检测到子菜单对象。我尝试过做一个没有结果的动作构建器。我继续得到:
org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"partial link text","selector":"spotlight"}
有关我遇到困难的类似菜单的示例,请访问cleanandclear.com并使窗口尺寸小于全屏。
我希望工作的代码是:
driver.findElement(By.id("touch-menu")).click();
driver.findElement(By.linkText("Spotlight")).click();
答案 0 :(得分:0)
我有同样的问题,在较小的屏幕我的下拉列表的高度大于浏览器窗口高度所以selenium webdriver无法找到元素。因此,我将html最小化为两次/三次,适合浏览器。
要最小化html,您可以使用以下代码:
WebElement html = seleniumHelper.getDriver().findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
这解决了我的问题。
答案 1 :(得分:0)
尝试以下代码:
Thread.sleep(3000);
JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement elem = driver.findElement(By.linkText("Spotlight"));//u can use xpath or cssselector or id here.
//this line will scroll down to make element visible
js.executeScript("window.scrollTo(" + elem.getLocation().x + "," +(elem.getLocation().y- 100) + ");");
//don't use this kind of wait, use explicit wait
Thread.sleep(1000);
//use this explicit wait.
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("ur selector of that animated element")));//u can use by id or xpath here also.
elem.click();
//u can also use this function to make the element visible
js.executeScript("arguments[0].scrollIntoView(true);", elem);
elem.click();