2014-07-06 113 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

相關問題