2012-10-12 49 views
0

當我嘗試使用webdriver選擇帶撇號的回答(發生在所有瀏覽器中)時,我得到了這個InvalidSelectorException。我試圖用反斜槓逃脫撇號,但我認爲這是因爲它存儲在它沒有得到逃脫的變量:如何從包含撇號的下拉列表中選擇答案?

org.openqa.selenium.InvalidSelectorException: The xpath expression '//select[@name='titleCode']/option[@value='I'm in college']' cannot be evaluated or does notresult in a WebElement (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 219 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html 
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:08:56' 
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_25' 
Driver info: driver.version: EventFiringWebDriver 
Session ID: 6efb7eae-3afb-4ab1-948d-146b42d2c96c 
Command duration or timeout: 701 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html 
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:09:54' 
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-32-generic', java.version: '1.6.0_31' 
Driver info: driver.version: RemoteWebDriver 
Session ID: 1350062508295 

這裏是Java代碼。變量quesiton和答案是字符串列表從DB:

driver.findElement(By.xpath("//select[@name='" + question + "']/option[@value='" + answer + "']")).click(); 

下面是HTML:

<select id="select1" class="select" name="titleCode"> 
<option selected="" value="">Please select...</option> 
<option value="I'm in high school">I'm in high school</option> 
<option value="I'm in college">I'm in college</option> 
</select> 

有沒有一種方式來逃避被存儲在一個變量或另一個字符串的撇號繞過這個方法還是撇號甚至是問題?任何幫助將非常感激。謝謝!

布萊恩

+0

如果你需要'答案'是動態的,我只是不使用XPath的查詢部分。獲取'並循環回答。 – millimoose

+0

如果它不包含引號,它是否工作? –

+0

是的,它不包含引號。是的,我想我可以從列表中隨機選取一個值。我仍然很好奇,如果有一種方法可以避免變量中的引號。 –

回答

0

試試這個:

<select id="select1" class="select" name="titleCode"> 
    <option selected="" value="">Please select...</option> 
    <option value="I&#39;m in high school">I&#39;m in high school</option> 
    <option value="I&#39;m in college">I&#39;m in college</option> 
</select> 

選項標記之間,因爲它們沒有貼不應該是必要的,但以防萬一。

我希望這個工程

+0

我有一種簡單的方式,並做了毫無選擇的方式,但這絕對是我沒有嘗試過的一種方式。 –