2011-06-13 116 views
1

我試圖自動化與硒RC以下情形:XPath或CSS不工作

  1. 打開谷歌主頁,在搜索框中輸入「軟件」,然後點擊搜索按鈕。
  2. 點擊Google搜索檢索到的多個鏈接的第一個鏈接。

由於我沒有看到這些鏈接的名稱或id屬性,並且此鏈接的內容是動態的,所以我嘗試使用XPath或CSS。

從Firebug,我得到XPath和CSS右鍵單擊然後複製XPath,複製CSS。

XPATH:/html/body/div[2]/div/div/div[6]/div[2]/div/div[2]/div/ol/li[1]/div/span/h3/a 

CSS:html body#gsr div#main div div#cnt div#nr_container div#center_col div#res.med div#search div#ires ol#rso li.g div.vsc span.tl h3.r a.l 

我嘗試在目標硒中輸入上面的XPath中的XPath,並找到按鈕。它工作得很好 但是當我使用上述XPath或CSS硒RC爲:

selenium.click("xpath=//html/body/div[2]/div/div/div[6]/div[2]/div/div[2]/div/ol/li[1]/div/span/h3/a"); 
selenium.click("css=html body#gsr div#main div div#cnt div#nr_container div#center_col div#res.med div#search div#ires ol#rso li.g div.vsc span.tl h3.r a.l"); 

上述兩個線路不工作,並給出錯誤。 請建議。

我的代碼是如下:

package Eclipse_Package; 

import com.thoughtworks.selenium.*; 
import org.junit.*; 
//import org.junit.Before; 
//import org.junit.Test; 
import java.util.regex.Pattern; 

public class Selenium_SX extends SeleneseTestCase { 

//  public class Jun3 
     @Before 
     public void setUp() { 
      selenium = new DefaultSelenium("localhost", 4444, "*firefox3 C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe", "http://www.google.co.in/"); 
      selenium.start(); 
     } 
//  C:\Program Files (x86)\Mozilla Firefox\ 
     @SuppressWarnings("deprecation") 
     @Test 
     public void test() { 
      selenium.open("http://www.google.com"); 
      selenium.windowMaximize(); 
//   selenium.waitForPageToLoad("5000"); 
//   selenium.type("id=acpro_inp3", "selenium"); 
      selenium.type("q", "software"); 
      selenium.click("btnG"); 
      selenium.waitForPageToLoad("7000"); 
//   selenium.fireEvent("Selenium web application testing system", "click"); 
//   selenium.click("link=Selenium web application testing system"); 
//   selenium.click("xpath=//html/body/div[2]/div/div/div[6]/div[2]/div/div[2]/div/ol/li[1]/div/span/h3/a"); 
      selenium.click("xpath=(//a[class=\"li[1]\"])[1]"); 

//   selenium.click("css=//div['span.tl h3.r a.l']"); 
      selenium.waitForPageToLoad("15000");    
     } 

     @After 
     public void tearDown() { 
      selenium.stop(); 
     } 
//  public static void main(String args[])throws Exception{ 
//   Selenium_SX sx=new Selenium_SX(); 
//   sx.setUp(); 
//   sx.test(); 
//   sx.tearDown(); 
//  } 
    } 
+1

您確定在執行點擊命令之前您是否等待足夠的時間? – 2011-06-13 11:06:53

+0

你可以添加你的源代碼。 – Tnem 2011-06-13 14:22:42

+0

請在編輯後的文章中找到代碼,並請提出建議。另外,當我點擊搜索按鈕後添加waitforpagetoload時,雖然我將時間增加到15000秒,但出現超時錯誤。因此,我嘗試在第一次在這裏發佈 – srikrish 2011-06-13 15:07:41

回答

0

嘗試此XPath (//a[@class="l"])[1]

+0

嘗試了下面的兩個,但他們沒有工作。 selenium.click( 「的xpath =(//一個[@class = \」 鏈接\ 「])[1]」); selenium.click( 「的xpath =(//一個[@class = \」 升\ 「])[1]」); – srikrish 2011-06-13 10:45:00

0

必須有暫停(暫停(1))或waitForElementPresent 2次點擊 這裏之間用於PHPUnit的工作樣品。奇怪,但clickAndWait does'n工作

$this->open("/"); 
$this->type("q", "software"); 
$this->click("btnG"); 
for ($second = 0; ; $second++) { 
    if ($second >= 60) $this->fail("timeout"); 
    try { 
     if ($this->isElementPresent("//a[@class='l']")) break; 
    } catch (Exception $e) {} 
    sleep(1); 
} 

$this->click("//a[@class='l']"); 
1

只是一個側面說明,谷歌已經在自動查詢的禁令。我使用Google來測試我什麼時候測試新手,現在我使用自己的服務器。

你所尋找的是這樣的:

//a[contains(text(), 'software')] 

這將選擇與鏈接文本「軟件」的第一個環節。

+0

是的,上述應該很好。 – 2013-09-05 09:16:41