2016-06-16 59 views
0

我很新硒(今天開始),我想獲得對應下面的HTML輸入WebElement:從cssSelector獲取硒WebElement在HTML輸入

<input size="25" style="text-align:center;" value="http" onclick="this.select();" type="text"></input> 

,然後獲取它的價值。這是我到目前爲止已經試過:

WebElement element = driver.findElement(By.cssSelector(".text-align:center")); 
String text = element.getText(); 

或者這樣:

WebElement element = driver.findElement(By.cssSelector("input[style='text-align:center']")); 

但Java在這兩種情況下會返回一個例外:

org.openqa.selenium.InvalidSelectorException:本給出選擇器 .text-align:center無效或不會導致出現 WebElement

謝謝, Héctor

回答

2

您是否必須通過cssSelector搜索元素?

你可以試試這個:

WebElement element = driver.findElement(By.cssSelector("input[type='text']")); 

如果cssSelector是沒有必要的,你可以嘗試與XPath抓住元素。 如果你使用Firefox,有一個叫螢火蟲插件,它允許你右鍵點擊檢查元素和直接複製的XPath然後使用後:

WebElement element = driver.findElement(By.xpath("XPATH HERE")); 

編輯:後的部分消失,redded它。

+0

它與xpath一起工作!謝謝!另一方面,當我做到以下幾點:referralBox.getAttribute(「價值」)我沒有得到的價值;但是如果我編寫referralBox.getAttribute(「style」),它將返回樣式。我不明白,我猜這是因爲該頁面有多個HTML輸入,其中有相同的type ='text'。 – hectorhfm

+1

嘗試使用referralBox.getAttribute(「innerHTML」);或使用referralBox.getText(); – SunnyH

+0

您的CSS選擇器'input [type ='text']',除非它是頁面上唯一的'INPUT',否則不會有足夠的特定性。 – JeffC

0

你的第一次嘗試稍微偏離

driver.findElement(By.cssSelector(".text-align:center")); 

的()。CSS選擇表示CSS類的名字,但是這就是元素的樣式,而不是一類。該元素上沒有類用於這種方式。

你的第二次嘗試看起來不錯,但也許它不是唯一的頁面上?很難說只有一行HTML。您必須提供更多的頁面HTML。再試一次,但得到value而不是文字。

WebElement element = driver.findElement(By.cssSelector("input[style='text-align:center']")); 
System.out.println(element.getAttribute("value")); 

這是否行得通?您可能必須提供一些獨特的HTML,這些HTML圍繞着INPUT,我們可以使用它來使CSS選擇器更加具體。