2016-02-16 28 views
-2

有誰知道如何設置一個值來跨越標籤使用水豚?如何用水豚設置量程值?

我嘗試使用element.setelement.send_keys,他們只選擇了目標元素而沒有修改以前的值。

<div data-offset-key="bbpvo-0-0" class="_1mf _1mj"><span data-offset-key="bbpvo-0-0"><span data-text="true">aa</span></span></div> 

HTML片段是上面,我想設置AABB

回答

0

水豚旨在模擬用戶 - 用戶不能編輯跨度,除非附加了某種JavaScript小部件。如果將JS小部件附加到跨度,則需要執行用戶爲了編輯跨度而執行的任何操作。所以你說,用戶必須點擊跨度,然後鍵入跨度 - 如果是這樣的話,那麼你可以嘗試像

span = find('span[data-text="true"]') 
span.click 
span.send_keys("new content", :enter) # if enter is needed to end the editing 

它可以工作 - 雖然我要去猜測元素實際上得到點擊後用輸入或其他內容代替,在這種情況下,您需要弄清楚這些元素是什麼(使用瀏覽器檢查器),然後找到並使用send_keys或設置該元素

+0

烏姆 - 存在於具有有一個id爲你與它交互的項目沒有限制 - 究竟用戶有什麼樣的行動來進行編輯你想要的內容編輯 - 即 - 用戶必須點擊數據文本=真正的跨度,然後鍵入?還是他們必須先點擊其他東西?一旦你知道了那麼你就可以讓水豚複製這些動作 - 當他們點擊跨度時(如果這是用戶必須做的)它會被其他元素替換嗎? –

+0

謝謝@ Tom Walpole,但這完全是Facebook的頁面,是的,我們可以使用js/jquery來執行編輯操作,但不幸的是,似乎我們只有在附加了該跨度的id時才能使用js,但在這裏我們沒有它。當我嘗試,它會拋出錯誤:2.1.6:005> page.execute_script(「$(\」#{find(:css,'span [data-text =「true」]')} \「)。html ('New Text');「) Selenium :: WebDriver :: Error :: JavascriptError:<![EX [[」試圖獲取ID爲\「%s \」的元素,但它不存在於頁面上。 「,」#「]]]> 你能告訴我如何使用js來改變span文本嗎? –

+0

你試圖調用的$是來自jQuery,但Facebook頁面不加載jQuery - 通過JS來完成,你只需要使用基本的DOM方法'document.querySelector('span [data-text =「true」 ]')。innerHTML =「新文本」;'或類似的東西 - 顯然你需要確定用來獲取所需元素的選擇器的範圍,或者如前所述。定義用戶必須執行的操作,然後使用capybaras api –

0

要設置跨度價值,jquery可以與水豚搭配使用,如下圖所示:

page.execute_script("$("<span css selector>").text("testing")"); 

page.execute_script("$("<span css selector>").html("testing <b>1 2 3</b>")");