问题
I am writing a geb test that asserts the axis labels in a highcharts graph.
The test I wrote works when run with the selenium chrome driver. When I run with phantomjs it fails.
//Selector in GEB
$(id:"graph-id").find("g.highcharts-legend-item").find("tspan").text()
This returns as expected in Chrome. It returns empty in phantomjs.
We have to use phantomjs for our CI builds.
回答1:
If for whatever reason geb isn't supporting your phantomjs driver properly, you can always execute a javascript selector directly through the browser:
def webElements = browser.driver.executeScript("""return document.querySelectorAll("#graph-id g.highcharts-legend-item tspan"); """)
def gebNavigators = webElements.collect{ new NonEmptyNavigator(browser, it) }
Which will give you a list of geb navigators which point to the selected elements.
回答2:
I don't have phantomjs on my machine but can you please try this and update us whether it's working or not?
$("#graph-id .highcharts-legend-item").find("tspan").text()
回答3:
We resolved the issue by reverting the version of phantomjs from 1.9.7 to 1.9.1 and the following library dependencies:
def seleniumVersion = "2.41.0"
def gebVersion = "0.9.0"
test "org.gebish:geb-spock:$gebVersion"
test "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-ie-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
test( "com.github.detro.ghostdriver:phantomjsdriver:1.0.4" ) {
transitive = false
}
来源:https://stackoverflow.com/questions/25668423/unable-to-assert-axis-label-text-in-highcharts-using-geb