2013-05-17 28 views
1

我廣泛使用PHPUnit和selenium與chibimagic.org github頁面上提供的WebDriver-PHP庫。我已經很好地完成了這個自動化工作,但是我偶然發現了一個問題,但是一直在解決,直到我發現這個問題導致我無法完成我開始自動化的工作。PHP Selenium無法選擇具有多個選擇框的HTML頁面的特定選擇框

如果我在我們測試的網站上的特定頁面上有多個選擇框(實際上是一個web應用程序),我只能選擇第一個選擇框並更改其選項,但不能選擇其後的其餘選擇框即使我正在使用get_element來單獨選擇正確的選擇框,它也只會選擇第一個選擇框,而不會繼續。我將包括HTML頁面,我無法選擇一個選擇框,這對於我選擇以便完成該頁面上的事務是必需的。

我想說明的是,此功能可以在其他頁面上工作,但只是我測試的某些網頁會產生此問題。我無法更改此頁面的HTML代碼,因爲它僅由其他公司控制和開發。所以改變HTML是不可能的,我看不到它可以選擇多個選擇框的頁面和不能夠成功選擇多個選擇框的頁面之間的區別。

我在使用get_element時使用XPath,CSS和標準選擇器,並且我使用它來選擇沒有問題的元素,以消除任何導致您認爲我沒有正確編碼的原因。編碼很好,圖書館在HTML代碼的特定情況下沒有正確地做某件事。

注意:這在具有多個選擇框的許多頁面上發生。請參閱pasteit鏈接到HTML的樣本。

附帶的HTML文檔: 問題樣品HTMLS: CreateDriver.html - 不能選擇多個選擇框(只選擇第一個選擇框) http://pastebin.com/zdhSJLh6

沒問題樣品HTMLS: TripScreen.html - 能夠選擇多個選擇框 http://pastebin.com/6JPAZZG3

+0

我沒有時間目前修復,但請注意外部粘貼板是不理想的這種現場。他們受到鏈接破壞的影響,爲了方便讀者,我們希望自己保留一些問題。謝謝! – halfer

回答

1

正是在這種只選擇基於其價值選擇的庫中的缺陷,像

//option[45]

如果在不同的選擇菜單中有相同值的選項,則選擇第一個選擇菜單中的選項,而不是其他菜單中的預期選項。

變化Webdriver.php的select_value($value)功能從

public function select_value($value) { 
    $this->get_next_element("//option[@value=" . WebDriver::QuoteXPath($value) . "]")->select(); 
} 

public function select_value($value) { 
    $options = $this->get_options(); 
    foreach ($options as $option) { 
     if ($option->get_value() == $value) { 
      $option->click(); 
      break; 
     } 
     else { 
      continue; 
     } 
    } 

}