我的网络应用程序响应迅速。即它适用于不同的屏幕尺寸。我们的开发人员为此编写了代码,因此,xpath发现的大多数web元素实际上都有2.其中一个用于全屏,一个用于“移动”或小屏幕。
例如,如果我使用Firepath通过链接文本搜索Xpath,它会说“找到2个元素”只能看到一个,然后如果我调整浏览器窗口的大小,那个消失了,另一个可以被人看见。
我的问题是:我可以在屏幕尺寸上使用一个Selenium脚本吗?它会自动使用可见或可点击的元素吗?如果我只编写两个元素中的一个,我会得到“元素不可点击”的例外。
或者是将所有移动元素分别添加到页面对象的最佳解决方案,并创建我的方法:
if (DesktopWebElement.isVisible)
do the test for desktop
else if (MobileWebElement.isVisible)
do the test for mobile
分别添加每个移动元素并编写页面对象中的每个方法,这似乎是一项额外的工作。为了节省时间,我只是想知道是否有一种方法可以使用找到两个元素的Xpath,而Selenium会找到第一个可见的。
答案 0 :(得分:0)
我遇到的情况是,除了不同的按钮外,显示的列因屏幕大小而异。
我的页面文件包含
等方法public int getScreenWidth() {
Dimension aScreen = webDriver.manage().window().getSize();
return aScreen.getWidth();
}
然后我的代码就像:
if (screenWidth < 1440 ) {
...
}
开发人员正在研究哪些列已删除以及哪些列宽。
开发人员设置的屏幕宽度截止值决定了哪个按钮显示。所以我根据当前的屏幕宽度点击桌面或移动按钮。要求开发人员记录他们编码的屏幕宽度截止值。
答案 1 :(得分:0)
您是否尝试ExpectedConditions.visibilityOfElementLocatedBy
,根据documents,它会为您提供附加到DOM的可见元素。这将使您能够与两个
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocatedBy(By.xpath(".//someXpath")));
element.click();
如果您觉得更适合,也可以尝试elementTobeClickable条件。请注意,这不会减慢您的测试速度,只要元素可见/可点击,它就会被返回。