2016-03-26 13 views
0

kullanarak bir metin kutusu yazın edilemez:Ben piton selenyum kullanarak aşağıdaki textarea html anahtarları göndermek için çalışıyorum piton selenyum

<div class="spk-c spH-d"><div id="gwt-uid-23" class="sppb-a"> 
<div class="sppb-b spk-b">For example, flowers or used cars</div> 
<textarea rows="2" aria-labelledby="gwt-uid-64 gwt-uid-23" id="gwt-debug-keywords-text-area" class="spk-a sppb-c"> 
</textarea> 
</div> 
<div role="alert" class="error" style="display:none"> Input contains a keyword that is too long. </div> <div class="error" style="display:none">Your product or service description can't exceed 1,000 words. Remove some words and try again. 
</div> 
</div> 

ve bu hatayı alıyorum: Burada

selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with 
Stacktrace: 

benim kodum:

Lütfen bana yardımcı olabilir misiniz? Bir süredir beni rahatsız ediyor. Html, Google anahtar kelime planlayıcısıdır. gönderme metinden önce eleman görünür kılmak için JS kodunu kullanmak size

cevap

0

deneyin ederiz:

driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').style.visibility = 'visible';") 
driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').style.display='bloc‌​k';") 

herhangi bir istisna oluşursa bana bildirin

GÜNCELLEME

Eğer metin göndermek istiyorsanız metin alanı JS kullanarak aşağıdakileri gerçekleştirmeniz gerekebilir:

driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').innerHTML='Here is some text';") 

veya

driver.execute_script("document.getElementById('gwt-debug-keywords-text-area').value='Here is some text';") 
+0

I sadece, method.find_element_by_css_selector (textarea) .send_keys ('tesisatçılar') ve hala aynı hatadan önce yönteminizi denediniz. İleti: Öğe şu anda görünür değil ve bu nedenle etkileşim kurulamayabilir. Belki de textarea değerini değiştirmek için javascript kullanarak değişiklik yaptı? Hiçbiri işe yaramayacak pek çok yöntem denedim. –

+0

Sadece kodunuzu denediniz ... hata yok ama hiçbir tuş göndermiyor, textarea boş kalıyor. –

0
Sen

WebDriverWait(driver, 15).until(expected_conditions.visibility_of_element_located((By.ID, 'gwt-debug-keywords-text-area'))).send_keys('plumbers') 

Edit

Bunun

etkileşim için textarea ile iframe geçmeniz metin kutusu görünürlük için beklemek koşulları beklenen kullanabilirsiniz

Ve geri

driver.switch_to.default_content() 
+0

Bir hata alıyorum NameError: 'By' adı, yönteminizi denerken tanımlanmamış. –

+0

@RobertWest Bunu ithal etmelisiniz sel selenium.webdriver.common.by içe aktarma '' ve beklenen koşullar '' selenium.webdriver.support import expected_conditions' – Guy

+0

tamam ... şimdi başka bir hatam var: AttributeError: 'visibility_of_element_located' object 'Send_keys' –

0

sizin selenyum koduyla olmayabilir sorunu ancak aracı kullanmaya ilişkin iş akışını değiştirmek için. Bu adwords anahtar kelime planlayıcısı aşina değilim, ama bu metin alanı ve selenyum kimliği için bir Google araması yaptım, ben ilk metin alanı sağlıyor gibi görünüyor bazı github code rastladım:

browser.find_element_by_id("gwt-debug-splash-panel-find-keywords-selection-input").click() 
browser.find_element_by_xpath("//textarea[@id='gwt-debug-keywords-text-area']").send_keys(keyword) 
+0

'un içinde de yok. Bu textarea'yı xpath veya css selektörleriyle veya sadece id ile seçmeye çalıştığımda her zaman aynı hatayı alırım. Bunu anlayamıyorum. –