Java 通过Selenium访问时,DOM未填充到PhantomJS中

Java 通过Selenium访问时,DOM未填充到PhantomJS中,java,selenium,selenium-webdriver,phantomjs,Java,Selenium,Selenium Webdriver,Phantomjs,我一直在寻找解决这个问题的方法已经很多天了,但是运气不太好 我使用的版本如下: -爪哇8 -硒3.4.0 -PhantomJS 1.9.8(与PhantomJS 2.1.1的结果相同) -JUnit4.12(通过JUnit调用代码) 这次运行在Windows 10上一切都正常,但我在CentOS 7上也遇到过类似的问题 我试图用PhantomJS运行Selenium,但在获得完全可用的页面时遇到了问题 以下是我遇到问题的代码片段(出于测试目的,有大量System.outs): methodDri

我一直在寻找解决这个问题的方法已经很多天了,但是运气不太好

我使用的版本如下:

-爪哇8

-硒3.4.0

-PhantomJS 1.9.8(与PhantomJS 2.1.1的结果相同)

-JUnit4.12(通过JUnit调用代码)

这次运行在Windows 10上一切都正常,但我在CentOS 7上也遇到过类似的问题

我试图用PhantomJS运行Selenium,但在获得完全可用的页面时遇到了问题

以下是我遇到问题的代码片段(出于测试目的,有大量System.outs):

methodDriver.manage().window().maximize();
System.out.println(methodDriver.getPageSource());
WebElement trackingInbox=methodDriver.findElement(By.id(“收件箱小部件容器id”);
WebElement inboxBody=trackingInbox.findElement(By.xpath(“div[1]/div[2]/table/tbody”);
>列表行=inboxBody.findElements(按.tagName(“tr”));
我明白了

“errorMessage”:“找不到id为“收件箱小部件容器id”的元素” 在生产线上: WebElement trackingInbox=methodDriver.findElement(By.id(“收件箱小部件容器id”)

这会让我有些担心,因为当我在第二行打印页面源代码时,这些是DOM内容:


跟踪收件箱



看起来您需要等待一个元素。否则,该网站不允许使用PhantomJS。让我们先尝试等待,参见下面的示例

WebDriverWait wait = new WebDriverWait(methodDriver, 10);
WebElement trackingInbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("inbox-widget-container-id")));

嗯,如果我提到要尝试的话,我会做得很好的。当然,这可能就是这样的答案。碰巧,我又给了他一次机会。不幸的是,同样的结果。看起来DOM从来没有得到任何应该包含在其中的元素。我想知道。您是否知道是否有特定类型的内容是PhantomJS无法触及的?这个网站是我们内部开发的,所以我们知道并没有做任何事情来明确禁止幽灵。可能只是网站使用的技术。@somexp12如果您的网站在HTTP头中检查用户代理以避免刮取,PhantomJS将无法工作。这是在Tomcat或其他地方设置的吗?我有一个部分的能力,以改变网站上的设置,所以这可能是固定的,但不知道这样的事情是如何正常设置。我想很多其他人可能会发现这样的东西很有用,因为很多人都可以控制他们正在测试的网站。
WebDriverWait wait = new WebDriverWait(methodDriver, 10);
WebElement trackingInbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("inbox-widget-container-id")));