2017-10-16 65 views
0

在硒我有以下代碼雖然webelement是可見的硒,但爲什麼會出現超時?

elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Create new collab']"))) 

,以便選擇下面的結構內的輸入字段:

<div class="md-input-container md-theme-default md-input-placeholder"> 
    <label>Collab Name</label> 
    <input placeholder="Create new collab" class="md-input" type="text">  
    <!----> 
    <!----> 
    <!----> 
    ::after 
</div> 

但我等待10秒後得到一個超時異常。手動我可以在加載後的一秒鐘內在該輸入字段中單擊並鍵入內容。

以下ExpectedConditions找不到元素:

  • visibility_of_element_located
  • element_to_be_clickable

而這methid是目前能找到的元素:

  • presence_of_element_located

但我不能在輸入字段中使用send_keys。我收到一個ElementNotInteractableException錯誤。之前在元素中單擊''不起作用 - 同樣的錯誤。

那麼還有什麼可嘗試?

+0

嘗試使用element_to_be_visible或element_to_be_present。也許由於某種原因,輸入不可點擊。 – smit9234

+0

這個輸入文本元素是否存在於iframe或frame中? – Grasshopper

+0

@Grasshopper:這是,但我選擇了這個幀,並在這個幀中執行了一些其他的成功操作 – Alex

回答

3

股利與class - 'md-tabs-wrapper'style attribute - 'transform: translate3d(-748px, 0px, 0px);'。該div包含您正在嘗試進行交互的輸入框。 transform:translate3d是什麼將div和內容移到左邊,在瀏覽器的視口之外。您可以通過在瀏覽器中複製相關的div來進行測試,然後關閉該樣式或更改值。

這種關閉解釋了爲什麼"presence" EC工作但知名度和點擊EC不。顯然硒不能夠看出該元素是可見的,因此拋出ElementNotInteractableException

改爲使用ActionChains。使用存在EC中的元素。

actions = ActionChains(driver) 
actions.move_to_element(element) 
actions.send_keys("hello world") 
actions.perform() 

還需要清除現有的佔位符文本,以使sendkeys正常工作。

+0

令人驚歎的答案(+1)!!! – DebanjanB

+0

非常好的答案! – shank087

0

嘗試以下操作:

elem = driver.find_elements_by_xpath("//input[@class='md-input' and @type='text']") 
driver.execute_script("arguments[0].scrollIntoView();", elem) 
wait = WebDriverWait(driver, 10) 
my_element = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='md-input' and @type='text']"))) 
my_element.click() 
相關問題