所以我有一个网站,它有一个组合,我需要从中选择一个项目,现在的问题是它有点不传统,没有选项作为元素,而是有 div。
所以我需要我的程序单击组合框然后等待(我发现最好的方法是通过implicitly_wait(3)# 3秒),然后单击我需要的框元素。 Firefox 在这方面做得很好,但 PhantomJS 似乎抛出:
Selenium.common.exceptions.ElementNotVisibleException:
Message: 'Error Message => \'Element is not currently visible and may not be manipulated\'
我不确定其原因是什么,但我怀疑 PhantomJS 由于某种原因未能通过implicitly_wait正确等待并尝试选择不可见元素。
知道如何在不强制线程 sleep 的情况下解决这个问题吗?
最佳答案
是的,你的问题听起来正是我刚刚在 UI 测试中修复的问题,但这个问题开始让我烦恼。相当复杂的一个,它可以通过所有浏览器,除了我最喜欢的 PhantomJs(这是最快的)。
这非常烦人,在调试器中我可以清楚地看到甚至父元素也设置为可见。无论出于何种原因(不是 CSS 或事件样式),只有我需要单击的主要面孔组件不可见。
查看 Phantom JS 屏幕截图后,我发现窗口非常小,而且 UI 元素实际上在视觉上不可见。
你现在明白我的意思了吗?
Phantom JS 是一个 headless 浏览器,它不会向您呈现窗口,但它确实使用窗口,并且窗口确实有大小。 这个异常是非常出乎意料的,因为背后的引擎与 chrome 和 safari 使用的引擎相同......事情应该可以正常工作。
好吧,他们最终做到了。 尝试像这样调整你的驱动工厂:
WebDriver driver = new PhantomJSDriver();
driver.manage().window().setSize(new Dimension(800, 600));
return driver;
祝你好运。
关于python - Selenium PhantomJS 抛出 EelementNotVisible,而 Firefox 在组合框选择期间完全正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24448631/