2011-06-13 53 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