python - Selenium PhantomJS 抛出 EelementNotVisible,而 Firefox 在组合框选择期间完全正常

标签 python firefox selenium-webdriver web-scraping phantomjs

所以我有一个网站,它有一个组合,我需要从中选择一个项目,现在的问题是它有点不传统,没有选项作为元素,而是有 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/

相关文章:

java - Selenium Web 驱动程序 getPageSource() 放错了包含转义值的属性和值

java - Selenium 2 StackOverflowError,JSONObject

python - 在 python 中查找来自不同列表的匹配元素时遍历列表

python - 如何获取 facebook-sdk 的 oauth_access_token

python - 使用 Python 3.5 从 CSV 文件的两列中删除特定字符

python - OpenCV,如何加入/填充线或框或圆中的间隙(Python)

Firefox 7.0.1 上的 Jquery 动画滞后

selenium-webdriver - 开发人员可以做些什么来使浏览器 ui 易于自动化测试?

css - 如何制作可选择的 A 标签?

javascript - 如何将控制台和文档上的内置方法分配给 javascript 中的变量?