Selenium,PHPUnit - 使用xpath单击链接

时间:2014-07-06 12:07:01

标签: php selenium xpath click phpunit

我想使用XPath点击链接,但我找不到任何解决方案。 这是xpath

//td[text()='".$Variable."']/../td/div/a"

xpath工作正常,它会突出显示正确的元素。但是我无法点击它。 整个语法在这里

$this->click("xpath=//td[text()='".$Variable."']/../td/div/a");

当我尝试运行测试时,这是我收到的错误消息。

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: java.lang.String cannot be cast to java.lang.Long

我读了一些文章,但大多数都使用java。我希望用PHP。

4 个答案:

答案 0 :(得分:0)

我曾与Facebook php-WebDriver library合作。

这个解决方案对我来说很好:

$loginButtonCSS="#loginbutton";

$submitButton=driver->findElement(WebDriverBy::cssSelector(loginButtonCSS));
$submitButton->click();

替代使用xPath:

// NOTE: try to omit symbols  '  in your xPath
$elementXpath= "xpath=//td[text()=".$Variable."]/../td/div/a"; 
$webElement= driver->findElement(WebDriverBy::xpath($elementXpath));
$webElement->click();

希望这会对你有所帮助。

答案 1 :(得分:0)

顺便说一下,这是另一个例子。 可能更适合你:

<?php
class GitHubTest extends PHPUnit_Framework_TestCase {

    /**
     * @var \RemoteWebDriver
     */
    protected $webDriver;

    public function setUp()
    {
        $capabilities = array(\WebDriverCapabilityType::BROWSER_NAME => 'firefox');
        $this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
    }

    public function tearDown()
    {
        $this->webDriver->close();
    }

    public function testSearch()
    {
        $this->webDriver->get($this->url);
        // find search field by its id
        $search = $this->webDriver->findElement(WebDriverBy::id('js-command-bar-field'));
        $search->click();

        $webElement = $this->webDriver->findElement(WebDriverBy::xpath('//*[@property="abracadabra"]'));
    }    
}
?>

所以你可以看到如何使用xPath定位元素。 此示例取自Working with PHPUnit and Selenium Webdriver。我想你也会觉得它很有帮助。

答案 2 :(得分:0)

如果您使用PHPUnit_Extensions_Selenium2TestCase

将表达式存储在变量

$xpath="//input[@value='text']";
$this->byXPath($xpath)->click();

答案 3 :(得分:0)

似乎你没有扩展正确的课程。似乎您正在尝试使用selenium rc。如果要使用,则应扩展 PHPUnit_Extensions_SeleniumTestCase

$this->click("//someXpath");

如果您正在使用php-webdriver,则必须扩展 PHPUnit_Framework_TestCase ,并且还要包含php facebook webdriver(或任何其他php-webdriver库)使用)。请记住,selenium RC测试不适用于webdriver,反之亦然。如您所见,他们有不同的方式来识别和与元素以及浏览器本身进行交互。有关硒和硒的更多信息phpunit,Here