2016-02-11 82 views
0
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
elem = driver.switch_to_active_element() 
elem.send_keys('a') 

我想將鍵發送到頁面上當前活動的元素,但我不知道如何從驅動程序獲取活動元素。我需要它,因爲在這個元素上沒有名字,ID,類等。我發現了Java的代碼,這是Python的一些代碼(上面已經寫過),但是沒有結果。在Python中獲取活動元素

這裏是頁面,而對象「」沒有attrs。如何選擇它?

<div action-name="menu-holder" class="uiMenuButtonSelectionHolder"> 
    <a href="javascript:;" class="choiceMenuClose" action-name="choice-menu-close"></a> 
    <div style="top: 0px; left: 0px;" class="uiInlineBlock uiMenuHolder"> 
    <div> 
     <input type="text"> 
    </div> 

回答

0

你可以通過像下面這樣的CSS選擇器來識別輸入標籤。看看this,以獲取有關選擇

elem = driver.find_element_by_css_selector('div.uiInlineBlock input') 
elem.send_keys('a') 

的選擇更好的理解可以理解爲找到input tag, descendant to the div with class name _uiInlineBlock_

希望你沒有其他同類的div,在這種情況下你必須使用find_elements_by_css_selector,並從返回的元素列表中選擇你想要的元素send_keys

編輯:

如果該元素是不可見的,你可以去通過使其可見的流動,也可以執行JavaScript來發現並將其值設置

driver.execute_script("document.querySelector('div.uiInlineBlock input').setAttribute('value', 'a');") 
+0

ElementNotVisibleException:消息:元素當前不可見,所以可能不會 –

+0

有加如何處理在回答 – Obsidian

+0

由於隱藏元素進行交互!它有效,但我有另一個問題。之後,我需要在該對象上發送回車鍵爲了發送值,但正如我所提到的,我無法在python中訪問它。有沒有辦法通過JS發送輸入,或者你有什麼想法如何在設定值後按下輸入。 –

3

我一直這種自我掙扎,直到我碰到this link.來到

switch_to_active_element()已被棄用,我們應該用switch_to.active_element

所以,它應該是:

elem = driver.switch_to.active_element