我正在使用Selenium WebDriver(Java)和TestNG在我创建的网站上进行一些测试.在这个网站上,我也有JavaScript,在一些函数中,它返回值并通过输出值输出到浏览器控制台console.log().
我想知道Selenium WebDriver是否有一种简单的方法可以访问这些JavaScript信息,因此我可以使用TestNG执行断言.
我对Selenium很新,但我知道你可以这样做:
WebDriver driver = new ChromeDriver();
driver.findElement(By.id("btn")).click();
Run Code Online (Sandbox Code Playgroud)
那么我可以用什么类似的东西WebDriver来阅读网站上的JavaScript?
看起来人们假设我正试图通过Selenium"执行"JavaScript代码.
不是这样的.相反,我正在尝试使用Selenium存储已定义的JavaScript变量.
基本上,我希望Selenium能够获取JavaScript变量的值,将其存储在本地,然后对其进行断言测试.
说我的网站有以下JS代码:
$(document).ready(function() {
var foo = $(#"input-field-val").val();
function returnFoo() {
return foo;
}
});
Run Code Online (Sandbox Code Playgroud)
根据我的阅读和理解,在我单独的Selenium测试文件(Selenium.java)中,我应该可以做这样的事情吗?:
public class Selenium {
WebDriver driver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor) driver;
@Test
public void testSample() {
driver.get("www.mywebsite.com");
js.executeScript("alert(returnFoo());");
}
}
Run Code Online (Sandbox Code Playgroud)
我做了类似于上面的事情,但没有弹出警报框.相反,我收到一条错误消息:
Exception in thread "main" org.openqa.selenium.WebDriverException: ReferenceError: returnFoo is not defined
Run Code Online (Sandbox Code Playgroud)
当我说JS变量时,我很确定我不明白它意味着什么
不应该是闭包或局部变量的一部分
我也尝试在上面定义一个全局变量,$(document).ready(function()...并且设置在function returnFoo()但仍然不起作用.
我已经移动了两个 …
我正在关注迈克尔·哈特尔的ruby on rails教程来测试示例应用程序(3.2.1测试驱动开发),但输入后我遇到了以下错误 bundle exec rspec spec/requests/static_pages_spec.rb
/home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in `require': cannot load such file -- zip/zip (LoadError)
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in `<top (required)>'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common.rb:9:in `require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common.rb:9:in `<top (required)>'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver.rb:29:in `require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver.rb:29:in `<top (required)>'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium-webdriver.rb:1:in `require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/gems/selenium-webdriver-2.0.0/lib/selenium-webdriver.rb:1:in `<top (required)>'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /home/rahul/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
from /home/rahul/Downloads/rails_projects/sample_app/config/application.rb:12:in `<top (required)>'
from /home/rahul/Downloads/rails_projects/sample_app/config/environment.rb:2:in `require'
from /home/rahul/Downloads/rails_projects/sample_app/config/environment.rb:2:in `<top (required)>'
from …Run Code Online (Sandbox Code Playgroud)