2014-03-07 52 views
0

我有一個文本框將顯示錯誤消息,如果如果沒有顯示錯誤照耀處文本是不正確的如何打印在網頁上顯示的錯誤信息 - 硒蟒蛇

<label class="error" for="first_name" style="display: block;">Invalid first name</label> 

酒店style="display:block;"style="display:none;"我試過error = driver.find_element_by_css_selector('.error').text但它返回空白文本。

請大家幫我想想辦法

另外:

文本字段的HTML如下所示

<div class="regTextbox_small"> 

<input id="first_name" class="regBox_cl_small" type="text" value="" placeholder="First Name" onblur="this.placeholder = 'First Name'" onfocus="this.placeholder = ''" name="first_name"> 
</input> 

錯誤消息的HTML的一部分,只有當發生錯誤時顯示

+0

是否有任何其他標籤類「錯誤」?你也需要檢查其他標籤。可能會出現這樣的情況:webdriver正在查找類「錯誤」並且裏面沒有任何文本的標籤。 webdriver的工作方式是,如果從findElement方法中找到多個元素,webdriver會考慮第一個元素,在您的情況下可能會成爲另一個標籤,類爲'error' –

+2

我會嘗試'error = driver.find_element_xpath(' //標籤[@ class =「error」]').text代替(當然,在try/except塊內部,如果元素不在那裏)。 –

+0

現在我找到了解決方案。 現在我有疑問。如果在這個類下有多個錯誤信息呢?我可以打印每個錯誤消息嗎?怎麼樣? –

回答

0

對於您可以使用jQuery ..

<script type="text/javascript"> 
    $("input:text").keyup(function() { 
    if (isNaN(obj.value)) 
{ 
document.getElementById("errorlabel").style.dispaly="block"; 
} 

}); 
</script> 

<input type="text"/><label id="errorlabel" class="error" for="first_name" style="display: block;">Invalid first name</label> 

我只是想證明你可以做到這樣。假設如果在文本框中,如果嘗試輸入字符串,那麼它會給我錯誤,並顯示帶有錯誤消息的標籤。

希望它能幫助你。

+0

OP不想顯示錯誤標籤。 OP想要在使用selenium webdriver API的錯誤標籤中找到DOM中的現有標籤。 –

+0

現在我找到了解決方案。現在我有疑問了。如果在這個類下有多個錯誤信息呢?我可以打印每個錯誤消息嗎?怎麼樣? –

+0

如果假設有一個包含所有錯誤消息的類,那麼您可以使用for循環打印錯誤消息。 – user3217843

-1

你可以嘗試使用庫如BeautifulSoup或

解析html頁面

「driver.page_source」會給你html數據。將它分配給一個變量,並使用正則表達式來檢索任何你想要的。

+0

這裏沒有必要去解析庫。 Selenium WebDriver API足以獲取DOM中的元素。 –