2013-02-20 48 views
0

我正在編寫自動生成的代碼如google搜索幫助,並試圖打印該自動生成的下拉列表的值作爲輸出。Selenium Web驅動程序:php-webdriver-bindings的findElementsBy()函數返回錯誤

在硒的webdriver捕捉多個元素,將匹配了的xpath定位器,我們必須使用findElementsBy()函數,

我寫下面

<?php 
require_once 'www/library/phpwebdriver/WebDriver.php'; 
class PHPWebDriverTest extends PHPUnit_Framework_TestCase { 
protected $webdriver; 

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

    protected function tearDown() { 
    // $this->webdriver->close(); 
    } 
    public function testgooglesearch() {       
    $this->webdriver->get("http://google.com"); 
    $element=$this->webdriver->findElementBy(LocatorStrategy::name, "q");   
    $element->sendKeys(array("selenium")); 
    $result=$this->webdriver->findElementsBy(LocatorStrategy::xpath,"//*[@id=\'gsr\']/table/tbody/tr/td[2]/table/tbody/tr[*]/td/"); 
    echo $countresult=count($result); 

    } 
} 
?> 

給出作爲每綁定的代碼findElementsBy()函數將假設返回一個數組。所以當我試圖計數數組長度時,錯誤正在返回。

錯誤:試圖獲取非對象的屬性。

任何一個請幫助我,我可以如何繼續。

+2

** **什麼錯誤給出? – Arran 2013-02-20 17:17:52

+0

上面顯示的webdriver異常是數組正在打印 – John 2013-02-20 17:25:00

+0

哪個PHP綁定?那裏有不少人,Selenium dev團隊沒有任何官方支持。 – Ardesco 2013-02-22 10:55:13

回答

6

最後,我能夠自己找到問題的解決方案。

我的主要口號是打印的汽車的價值產生下拉

的主要問題是測試。如測試速度的運行速度快,所以「findElementsBy」功能無法正常工作正常。

所以我使用睡眠命令就在該功能之前,以便它可以正常工作。

其正常工作,我的代碼如下

<?php 
require_once "/phpwebdriver/WebDriver.php"; 
class WebdriverTest extends PHPUnit_Framework_TestCase 

{ 
    protected $webdriver; 

    protected function setUp() 
    { 

$this->webdriver=new WebDriver("localhost", 4444); 

    $this->webdriver->connect("firefox"); 
    } 

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

    public function testSearch() 
    { 
    $this->webdriver->get("http://google.com");   

     $element=$this->webdriver->findElementBy(LocatorStrategy::name,"q"); 
    $element->sendKeys(array("selenium")); 

sleep(2); 
    $result=$this->webdriver->findElementsBy(LocatorStrategy::xpath,"//td[@class='gssb_a gbqfsf']"); 
    $countresult=count($result); 
    echo "Records Count = ". $countresult ."\n"; 
     $x=1; 
    $y=0; 
    echo "\n"; 
    while($y<$countresult) 
     { 
     $output=$result[$y]->getText(); 
    echo $output."\n"; 
     $x++; 
     $y++; 
     } 

    $r=$this->webdriver->findElementBy(LocatorStrategy::xpath,"//div[@class='gbqlca']"); 
    $r->click(); 



    } 



} 
?> 
0

這可能對您有用。

點擊here

FYI:以上實現在Java的硒綁定。

+0

@samtoshsharma 感謝您的鏈接,我已檢查該鏈接但使用PHP是不是非常有幫助的PHP的webdriver-綁定。 。 – John 2013-02-21 12:54:50

+0

@John:是的,我知道,我不知道php-webdriver綁定,因爲我正在使用java。我建議你這個鏈接,因爲它可能會給你一些想法來解決你的問題。 – Santoshsarma 2013-02-21 14:42:43

相關問題