【问题标题】:Having trouble getting phpunit-selenium2 to click a button无法让 phpunit-selenium2 单击按钮
【发布时间】:2014-11-16 22:41:27
【问题描述】:

这是按钮的html:

<button class="btn btn-hover-success"><i class="icon-plus"></i> Add</button>

这里是根据 chrome 扩展的 XPath 路径:

/body[@class='wide']/div[@class='container']/div[@id='main']/div[@class='container']/div[@class='content']/div[@class='users form']/form[@id='UserAddForm']/div[@class='button-control-row']/button[@class='btn btn-hover-success']

我尝试使用byXPathbyCssSelector(和byLinkText,但它实际上不是链接)来定位按钮,但没有成功。这是我最近的一次:

    // Attempt to add a bogus user
    $netidInput = $this->byId('UserNetid');
    $netidInput->value('bogus01');
    $submitLink = $this->byCssSelector('button');
    $this->assertEquals('Add', $submitLink->text());
    $this->click();
    $this->assertContains('Users', $this->title());

assertEquals 成功匹配按钮文本“添加”,但无法单击它。我收到以下错误:

[root@#### 查看]# phpunit UsersViewTest.php 塞巴斯蒂安伯格曼的 PHPUnit 3.7.18。 乙 时间:5 秒,内存:5.75Mb 有 1 个错误: 1) 用户视图测试::testMyTest PHPUnit_Extensions_Selenium2TestCase_WebDriverException:'[JavaScript 错误:“无法访问死对象”{file:“file:///tmp/anonymous8204548738502860021webdriver-profile/extensions/fxdriver@googlecode.com/components/synthetic-mouse.js”行:7462} ]' 调用方法时:[wdIMouse::click] 构建信息:版本:'2.43.0',修订:'597b76b',时间:'2014-09-09 20:52:14' 系统信息:主机:'####',ip:'127.0.0.1',os.name:'Linux',os.arch:'amd64',os.version:'2.6.32-358.el6.x86_64 ',java.version:'1.6.0_24' 驱动程序信息:驱动程序版本:未知 /var/www/html/formsdev/app/Plugin/BaseApp/Test/Case/View/UsersViewTest.php:25 /var/www/html/formsdev/app/Plugin/BaseApp/Test/Case/View/UsersViewTest.php:25 失败! 测试:1,断言:2,错误:1。

这是针对 RHEL 6.4 上的 Xvfb 无头浏览器运行的。如果我遗漏了任何相关信息,请告诉我。感谢您提供的任何建议!

编辑:添加另一个可能会触发某人某事的不同错误的尝试。

    $submitLink = $this->byXPath("//button[contains(text(),'Add')]");
    $this->assertEquals('Add', $submitLink->text());
    $this->click("//button[contains(text(),'Add')]");

这会导致错误:

There was 1 error: 1) UsersViewTest::testMyTest PHPUnit_Extensions_Selenium2TestCase_WebDriverException: java.lang.String cannot be cast to java.lang.Long

【问题讨论】:

    标签: selenium phpunit


    【解决方案1】:

    事实证明,我错误地调用了 click。我需要使用 $submitLink->click() 而不是 $this->click(),它适用于 XPath 或 CssSelector 定位它的方法。

    // Attempt to add a bogus user $netidInput = $this->byId('UserNetid'); $netidInput->value('bogus01'); $submitLink = $this->byCssSelector('button'); //$submitLink = $this->byXPath("//button[contains(text(),'Add')]"); $this->assertEquals('Add', $submitLink->text()); $submitLink->click(); $this->assertContains('Users', $this->title());

    干杯!

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 2017-08-18
      • 2012-05-24
      • 2012-05-18
      • 2023-03-26
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多