2012-03-16 52 views
2

我遇到了問題自動化,使用Selenium RC和Java在帶有變量ID的文本框中輸入文本。奇怪的是,下面的代碼在Selenium RC中用C#工作得很好,但在Java中卻沒有。如何在webdriver支持的Selenium RC中包含正則表達式?

selenium.type("xpath=//input[matches(@id,'.*firstName')]", firstName); 

在C#上使用Selenium RC,但不使用Java。

我也嘗試了這些選項在尋找一些計算器的職位後,但它仍然無法正常工作

xpath=//input[@contains(@id,'firstName')]; 
xpath=//input[@contains(@id,'.*firstName')]; 
xpath=//input["id=regexp:.*firstName"); 
css=input[id^='regexp:.*firstName']; 
css=input[id^='firstName'] 

這裏的文本框的Xpath的代碼。

<td> 
<input type="text" class="textboxbase" id="mymainfirstgenid_13_mainsecond:firstName"  style= "width:160px; "tabindex="0"> 
</td> 

我使用(。*)作爲在硒C#的正常工作,但在Java中不起作用變量ID的正則表達式。另外我不能使用類和名稱作爲參數,因爲它們對於所有字段都是相同的。只有每個元素都有變量ID。

任何幫助將不勝感激。

+0

你確定這個問題是你的XPath表達式?我會認爲問題在於你的'type'的第二個參數只是'。* firstName';它不需要''。* firstName「'?那就是 - 它不需要是一個用雙引號括起來的字符串嗎? – ruakh 2012-03-17 17:05:22

+0

感謝您的評論ruakh,是的,這是一個錯字錯誤。第二個參數是「firstName」,我聲明爲firstName =「John」或者某物。當我在eclipse中運行代碼時,它提供了一個錯誤:com.thoughtworks.selenium.SeleniumException:ERROR:Invalid xpath [2]:// input [matches(@id,'。* firstName')] at com.thoughtworks。 selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrErrororg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) – seleniumlover 2012-03-18 07:13:06

+0

哦,你沒有提到,它給了一個例外!我認爲它只是找不到你想要的元素。您應該發佈完整的堆棧跟蹤 - 以及有關您使用的Selenium版本的詳細信息。 – ruakh 2012-03-18 13:09:38

回答

0
css=input[id^='firstName'] 

是爲了開始一個字符串。

對於字符串的結尾使用:

css=input[id$='firstName'] 
+0

正則表達式在CSS3規範中是不允許的。 WebDriver只是使用本機瀏覽器支持的內容。作爲參考,我通常看看這個:http://www.w3.org/TR/CSS/#selectors – lukeis 2012-03-19 21:12:59

+0

非常感謝你TunaBum。這工作得很好。但是,你知道爲什麼Xpath不起作用嗎?我上面發佈的代碼在使用C#的Selenium中工作正常,但不能在Java中使用。 – seleniumlover 2012-03-20 23:47:40

+0

xpath = // input [contains(@ id,'firstName')]; 在「@」之前包含 xpath中還有一個endswith函數。但我不喜歡xpath和css更適合UI開發人員(更不用說人們通常會看到CSS選擇器的執行速度快於xpath)。 – lukeis 2012-03-31 04:16:22