我正在测试一个响应式网站,如果浏览器尺寸缩小(或在手机上查看),则会使用不同的图像。例如,如果浏览器窗口超过900宽图像,则使用尺寸(200,125)。当浏览器窗口在650和899之间时,使用尺寸(150,110)的图像,当浏览器窗口尺寸/宽度低于650时,使用尺寸为(100,75)的图像。我试着通过以下方式测试:
driver.manage().window().maximize();
assertEquals("(200, 125)",driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[2]/div[2]/section/ul/li[4]/a/div[1]/img")).getSize());
driver.manage().window().setSize(new Dimension(899, 750));
assertEquals("(150, 110)",driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[2]/div[2]/section/ul/li[4]/a/div[1]/img")).getSize());
driver.manage().window().setSize(new Dimension(649, 750));
assertEquals("(100, 75)",driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[2]/div[2]/section/ul/li[4]/a/div[1]/img")).getSize());
这似乎有效,但当我运行时,我收到以下消息:
java.lang.AssertionError: expected: java.lang.String<(200, 125)> but was: org.openqa.selenium.Dimension<(200, 125)>
不确定这意味着什么或如何修复它,代码似乎是正确的。
将Eclipse与Selenium webdriver和Java结合使用。
收到以下答案后,我将代码更改为:
assertEquals("(200, 125)",driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[2]/div[2]/section/ul/li[4]/a/div[1]/img")).getSize().toString());
并且所有这一切都解决了AssertionError并且如果图像是那么大,那么调整浏览器大小会导致图像缩放,这是我无法预测的。
答案 0 :(得分:1)
首先,我反对使用Selenium自动执行视觉/布局/渲染检查。我看到了UI测试自动化的好处,但我也很欣赏手动测试和它带来的价值。您希望图像的大小为200x125。有一天它是199x124?用户会发现差异吗?可能不是。你的考试会通过吗?可能不是。
其次,你的xpath定位器很脆弱。如果您需要使用/
超过3次,您可能希望在次要UI重构后测试失败,最终用户可能不会注意到这一点。关于如何创建固体xpath定位器,有很多好的帖子。你可以谷歌为他们。
如果您仍想自动化,那么您需要做的是将String转换为Dimension,反之亦然。您目前的类型不匹配。