У меня проблема с селенными тестами с phantomjs с Java. Я знаю, что phantomjs не поддерживает flash. Я запускаю двойные тесты с хромированным рекордером без включенной вспышки и фантома. на странице, в которой chromedriver отображает плагин с включенным плагином, он просто загружает остальную часть страницы и читает ее правильно. тесты фантомные сгенерирует исключение тайм-аута здесь:phantomjs не может загрузить страницу, если есть плагин Flash
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(),'"+s +"')]")));
любые идеи?
Полный StackTrace:
org.openqa.selenium.TimeoutException: Timed out after 10 seconds waiting for visibility of element located by By.xpath: //span[contains(text(),'Swiss Super League')]
Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'
System info: host: 'countZero', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-40-generic', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.phantomjs.PhantomJSDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, handlesAlerts=false, databaseEnabled=false, version=1.9.0, platform=LINUX, browserConnectionEnabled=false, proxy={proxyType=direct}, nativeEvents=true, acceptSslCerts=false, driverVersion=1.0.3, locationContextEnabled=false, webStorageEnabled=false, browserName=phantomjs, takesScreenshot=true, driverName=ghostdriver, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 9422d0d0-7731-11e4-9730-f784ef9dac1a
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:79)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at com.hawaii.gatherer.parsers.betfred.parse(betfred.java:88)
at com.hawaii.gatherer.parsers.Parser.call(Parser.java:93)
at com.hawaii.gatherer.parsers.Parser.call(Parser.java:27)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.openqa.selenium.NoSuchElementException: Error Message => 'Unable to find element with xpath '//span[contains(text(),'Swiss Super League')]''
caused by Request => {"headers":{"Accept":"application/json, image/png","Connection":"Keep-Alive","Content-Length":"73","Content-Type":"application/json; charset=utf-8","Host":"localhost:18409"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"xpath\",\"value\":\"//span[contains(text(),'Swiss Super League')]\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/9422d0d0-7731-11e4-9730-f784ef9dac1a/element"}
Command duration or timeout: 795 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'
System info: host: 'countZero', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-40-generic', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.phantomjs.PhantomJSDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, handlesAlerts=false, databaseEnabled=false, version=1.9.0, platform=LINUX, browserConnectionEnabled=false, proxy={proxyType=direct}, nativeEvents=true, acceptSslCerts=false, driverVersion=1.0.3, locationContextEnabled=false, webStorageEnabled=false, browserName=phantomjs, takesScreenshot=true, driverName=ghostdriver, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 9422d0d0-7731-11e4-9730-f784ef9dac1a
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:348)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:445)
at org.openqa.selenium.By$ByXPath.findElement(By.java:357)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)
at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:730)
at org.openqa.selenium.support.ui.ExpectedConditions.access$000(ExpectedConditions.java:39)
at org.openqa.selenium.support.ui.ExpectedConditions$4.apply(ExpectedConditions.java:130)
at org.openqa.selenium.support.ui.ExpectedConditions$4.apply(ExpectedConditions.java:126)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
... 7 more
Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'
System info: host: 'countZero', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-40-generic', java.version: '1.8.0_25'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:125)
... 17 more
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Error Message => 'Unable to find element with xpath '//span[contains(text(),'Swiss Super League')]''
caused by Request => {"headers":{"Accept":"application/json, image/png","Connection":"Keep-Alive","Content-Length":"73","Content-Type":"application/json; charset=utf-8","Host":"localhost:18409"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"xpath\",\"value\":\"//span[contains(text(),'Swiss Super League')]\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/9422d0d0-7731-11e4-9730-f784ef9dac1a/element"}
Build info: version: '2.41.0', revision: '3192d8a6c4449dc285928ba024779344f5423c58', time: '2014-03-27 11:29:39'
System info: host: 'countZero', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-40-generic', java.version: '1.8.0_25'
Driver info: driver.version: unknown
код, чтобы воспроизвести проблему:
public void test() throws InterruptedException {
//System.setProperty("webdriver.chrome.driver", Application.chromeDriverPath);
//WebDriver driver= new ChromeDriver();
WebDriver driver=new PhantomJSDriver();
driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
driver.manage().window().setSize(new Dimension(1280, 800));
driver.get("http://www.betfred.com/sport");
WebElement footballLink=driver.findElement(By.linkText("Football"));
footballLink.click();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement europeanLink= wait.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("European Leagues")));
europeanLink.click();
wait = new WebDriverWait(driver, 10);
WebElement leagueLink= wait.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Italian Serie A")));
leagueLink.click();
wait = new WebDriverWait(driver, 10);
WebElement finalLeagueLink=wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//a[contains(text(),'Italian Serie A') and contains(@class,'action')]"))));
Thread.sleep(1000);
finalLeagueLink.click();
driver.switchTo().frame("sportframe");
wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(),'Italian Serie A')]")));
}
к сведению, что если вы измените его на chromedriver не генерируется никакой ошибки, и вы можете увидеть страницу загруженной. с фантомом страница не загружается, и, следовательно, ошибка. возможно, я должен указать это как отчет об ошибке в github?
EDIT
Я представил новый вопрос здесь https://github.com/ariya/phantomjs/issues/12784
Я не понимаю нисходящие точки. Я исправил исключение crash = throw из этого блока кода. – arisalexis
сайт не использует SSL. URL-адрес: http://www.betfred.com/sport, когда вы отправляетесь в определенную лигу футбола-> европейские чашки-> голландские eredivisie-> матчей. что еще я могу опубликовать? исключение опубликовано в другом комментарии. Снимок экрана имеет страницу, обычно отображаемую, она просто не загружает финальную часть, когда я нажимаю на ссылку, как это делает хром. Это страница с содержимым сверху, а внизу - нет флэш-сообщения. Я не пытаюсь сделать игру, извините и благодарю за это. – arisalexis
К сожалению, ссылки меняются. Я обновлю его сейчас, но он будет устаревшим через пару недель. – arisalexis