Eclipse 断言图像大小无效

Eclipse 断言图像大小无效,eclipse,image,selenium-webdriver,size,assert,Eclipse,Image,Selenium Webdriver,Size,Assert,我正在测试一个响应迅速的网站,如果浏览器缩小(或在手机上观看),则会使用不同的图像。例如,如果浏览器窗口的宽度超过900,则图像将与尺寸(200125)一起使用。当浏览器窗口的宽度介于650和899之间时,图像与尺寸(150、110)一起使用;当浏览器窗口的大小/宽度低于650时,图像与尺寸(100、75)一起使用。我试图用以下方法来测试这一点: driver.manage().window().maximize(); assertEquals("(200, 125)",driver.findE

我正在测试一个响应迅速的网站,如果浏览器缩小(或在手机上观看),则会使用不同的图像。例如,如果浏览器窗口的宽度超过900,则图像将与尺寸(200125)一起使用。当浏览器窗口的宽度介于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)>

AllThink解决了AssertionError问题,如果图像的大小与此相同,那么调整浏览器的大小会导致图像缩放,这一点我无法预测。

首先,我反对使用Selenium自动化视觉/布局/渲染检查。我看到了UI测试自动化的好处,但我也欣赏手动测试及其带来的价值。您希望图像的大小为200x125。有一天它是什么199x124?用户会发现差异吗?可能不会。你的考试能通过吗?可能不会

其次,xpath定位器很脆弱。如果您需要使用
/
超过3次,那么您可能希望您的测试在小的UI重构之后失败,最终用户可能不会注意到这一点。关于如何创建可靠的xpath定位器,有很多很好的帖子。你可以用谷歌搜索它们


如果您仍然希望自动化,您需要做的是将字符串转换为维度,反之亦然。您目前的类型不匹配。

谢谢,我将研究xpath的使用情况。不是我用过的最好的。至于完全自动化视觉效果,我同意。这不是一个明智的选择。但这可以作为一个快速测试。也就是说,我仍然想继续,但我不太明白将字符串转换为维度是什么意思,我该怎么做?好的。找出了如何做到这一点,但也发现了为什么这不起作用。部分工作并转换为字符串的代码:assertEquals((200125)”,driver.findelelement(By.xpath(“/html/body/div[2]/div/div[2]/div/div/div[2]/div[2]/section/ul/li[4]/a/div[1]/img”).getSize().toString();这不起作用的原因是:尽管最初的尺寸是200,125,但它也会根据broswer的尺寸进行缩放,而且没有(简单的)方法来预测缩放(据我所知)。我很高兴你找到了解决方案。现在你知道为什么我不喜欢用自动化测试来执行这样的检查了。
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());