加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php-webdriver-bindings-0.9.0在selenium中执行javascript

发布时间:2020-12-13 21:48:06 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试在我的selenium测试套件中执行 JavaScript但它没有工作,我没有得到任何错误反馈.它优雅地接受我作为参数输入的任何内容到执行函数并通过测试.以下是我尝试过的组合: class TestingStuff extends PHPUnit_Framework_TestCase {protected function
我正在尝试在我的selenium测试套件中执行 JavaScript但它没有工作,我没有得到任何错误反馈.它优雅地接受我作为参数输入的任何内容到执行函数并通过测试.以下是我尝试过的组合:

class TestingStuff extends PHPUnit_Framework_TestCase {

protected function setUp() {
    $this->webdriver = new WebDriver("localhost",4444);
    $this->webdriver->connect("firefox");
}

protected function tearDown() {
    $this->webdriver->close();
}

public function testSomething() {
    $this->webdriver->get('http://localhost/testdir/');
    // Here is the execute function
    $this->webdriver->execute('alert','Hello');

$this->webdriver->get('http://127.0.0.1/testdir/');
// Here is the execute function
$this->webdriver->execute('alert("Hello")','');

$this->webdriver->get('http://127.0.0.1/testdir/');
// Here is the execute function
$this->webdriver->execute('javascript:alert("Hello")','');

$this->webdriver->get('http://localhost/testdir/');
// Here is the execute function
$this->webdriver->execute('alert()','Hello');
}

}

这是“WebDriver”类的功能:

/**
Inject a snippet of JavaScript into the page for execution in the context of the currently   selected frame.
* The executed script is assumed to be synchronous and the result of evaluating the script
* is returned to the client.
* @return Object result of evaluating the script is returned to the client.
*/
public function execute($script,$script_args) {
    $request = $this->requestURL . "/execute";
    $session = $this->curlInit($request);
    $args = array('script' => $script,'args' => $script_args);
    $jsonData = json_encode($args);
    $this->preparePOST($session,$jsonData);
    $response = curl_exec($session);
    return $this->extractValueFromJsonResponse($response);
}

解决方法

看一下

https://github.com/scopium/Work/blob/master/php-webdriver-bindings-0.9.0/test/PHPWebdriverTest.php

public function testExecute() {
    $this->webdriver->get(TEST_URL);
    $result = $this->webdriver->executeScript("return sayHello('unitTest')",array());
    $this->assertEquals("hello unitTest !!!",$result);
}

这是你想要实现的目标吗?

我正在使用phpunit-selenium并遇到类似的问题:

class MyTestClass extends PHPUnit_Extensions_Selenium2TestCase
{
   protected function setUp()
   {
     $this->setBrowser('firefox');
     $this->setBrowserUrl('http://yourdomain.tld');
   }

   public function testScript()
   {
     $this->url('./');
     $this->execute(array('script' => "alert('Hello');",'args' => array()));
     sleep(3); // Just to see the alert() 
   }
}

(来自https://github.com/sebastianbergmann/phpunit-selenium/issues/160)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读