2012-06-03 165 views

回答

1

我可能會回答搶從佔位電子郵件:

String email = driver.findElement(By.xpath("id('metamorph-0-start')/..')")).getText(); 

但是這隻有在沒有其他兄弟姐妹/後代的情況下才有效。

我要去承擔一些事情,一個是你的HTML居然是:

<script id="metamorph-0-start" type="text/x-placeholder"></script> 
[email protected] 
<script id="metamorph-0-end" type="text/x-placeholder"></script> 

要真的只是獲得的電子郵件,我會做這個使用Javascript:

String email = (String) ((JavascriptExecutor)driver).executeScript(
    "return arguments[0].nextSibling.textContent.split('\\n')[1]", 
    driver.findElement(By.id("metamorph-0-start"))); 

你也可以在Java中而不是在Javascript中進行換行。

+0

第一個表達式對我來說似乎很陌生。它是否有效XPath 1.0?我期望'// @ [@ id ='metamorph-0-start']/..' –

+2

@Slanec聖潔的廢話,它是! http://www.w3.org/TR/xpath/#function-id沒有它我怎麼能生活? –

0

沒有關於頁面(或包含元素)的更多知識,我認爲TunaBum有最好的答案。

這就是說,基於假定這是唯一的電子郵件地址(或相當的文字與at符號在INT)頁面上,你可以做

String email = driver.findElement(By.xpath("//*[contains(text(),'@')]")).getText(); 

那得到的文本元素在其文本中包含@

如果您的包含元素中有多個metamorph-number-start/end,並且其中每個都包含一些文本,那麼JS是您的唯一路徑,因爲WebDriver還不能使用文本節點。