2014-07-06 91 views
1

我想点击使用XPath的链接,但我无法找到任何解决方案。 这是XPathSelenium,PHPUnit - 点击使用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。

回答

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。我认为你也可以找到它有帮助。

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(); 

希望这可以帮助你。

+0

嗨,谢谢你的回答。但也有一个问题。这可能是因为我没有正确安装facebook php-webdriver。 现在,当我想运行此测试时,这是错误消息。 'InvalidSelectorException:无效的选择器:找不到具有xpath表达式的元素xpath = // td [text()= XXX180881] /../ td/d e以下错误: TypeError:无法执行'evaluate'on '文档':结果不是节点集,因此无法转换为所需的' – kristyna

+0

等待,如果我理解的很好,我必须根据facebook php-webdriver表达式重写我的代码中的所有内容? – kristyna

+0

首先,尝试检查您是否已经正确计算出元素的xPath:即在fireBug中检查此xPath:http://gyazo.com/61504eb631451c457112be347438f123;其次,检查你是否正确包含了所有必要的库,并且你可以执行webDriver方法调用 –

0

如果使用PHPUnit_Extensions_Selenium2TestCase

店表达的一个变量

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

看来你不延长正确的类。似乎你正在尝试使用硒rc。您应该延长PHPUnit_Extensions_SeleniumTestCase的,如果你想使用:

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

如果你正在使用PHP-webdriver的,你就必须延长化PHPUnit_Framework_TestCase,也包括PHP的Facebook的webdriver(或任何其他PHP-你正在使用的webdriver库)。请记住,硒RC测试不适用于webdriver,反之亦然。正如你所看到的,他们有不同的方式来识别和与元素和浏览器本身进行交互。有关硒的更多信息& phpunit,Here

相关问题