2016-03-30 22 views
0

Bazı temel tarayıcı sınamalarını gerçekleştirmek için selenium-python bağlamaları kullanıyorum. Varsayılan olarak görünmeyen bir öğeye tıklamanız gerekiyor. is_displayed() method tarafından kontrol ettim. Yani, aşağıdaki kodu kullanarak görünür hale getirmek için execute_script yöntemini kullanmayı denedim, ancak hata iletileri alıyorum. Görünmez bir elementi görmemiz gereken ortak bir senaryo. Bu tür sorunları yönetmenin başka yolları da olmalı. Kimsenin bana kodumdaki sorunu göstermesi yararlı olacaktır. Bir python kodu içinde saf js ile bir eleman üzerine tıklayabilir miyim? Selenium-python görünmez bir öğe görünür hale getiriyor

print "getting keyword ideas" 
searches = driver.find_element_by_xpath("//*[contains(text(), 'Avg. monthly searches')]") 
driver.execute_script("arguments.style.visibility='visible';", searches) 

ve hata iletisi: sürücüsünde, hat 140,

traceback (son En son çağrı): Dosya "\ vhosts \ phpsols \ kıymık \ adwords.py C". execute_script ("arguments.style.visibility = 'görünür';", aramalar) Dosya "C: \ anaconda32 \ lib \ site-paketleri \ selenyum \ webdriver \ uzaktan \ webdriver.py", satır 429, execute_script içinde { 'script': komut dosyası, 'args': converted_args}) ['value'] Dosya "C: \ anaconda32 \ lib \ site-packages \ selenium \ webd river \ remote \ webdriver.py ", hat 201, yürütme sırasında self.error_handler.check_response (yanıt) Dosya" C: \ anaconda32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py ", satır 181, check_response artış exception_class (ileti, ekran, stacktrace) selenium.common.exceptions.WebDriverException: İleti: {"errorMessage": "undefined bir nesne değil (değerlendiren 'arguments.style.visibility =' visible ' ') " "istek": { "başlıkları": { "Kabul Et": "application/json", "Accept-Encoding": "kimliğini", "Connection": "yakın", "Content-Length":" 210 ", "Content-Type": "application/json; charset = UTF-8", "Sunucu": "127.0.0.1:55867","User-Agent":"Python-urllib/2.7"},"httpVersion" : "1.1", "yöntem": "POST", "yayınla": "{\" sessionId \ ": \" 8f05e120-f672-11e5-91c5-c7097c43ddb4 \ " , \ "args \": [{\ "element-6066-11e4-a52e-4f735466cecf \": \ ": wdc: 1459340795815 \", \ "ELEMENT \": \ ": wdc: 1459340795815 \"}] , \ "script \": \ "arguments.style.visibility = 'visible'; \"} "," url ":"/execute "," urlParsed ": {" çapa ":" "," sorgu ": "", "dosya": "", "dizin yürütme": "/", "yol": ": ""/ yürütmek port" "/ "" göreli yürütme": "", "ev sahibi": "" "parola": "", "kullanıcı": "", "userinfo": "", "otorite": "", "protokol": "", "kaynak": "/" "" queryKey yürütün: { }, "parçalar":}} "/ oturum/8f05e120-f672-11e5-91c5-c7097c43ddb4/yürütme" ekran görüntüsü: "urlOriginal"} [ "yürütme"] mevcut ekran

<div id="gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0"> 
    <div style="text-align:right">Avg. monthly searches 
     <span class="table-tooltip" id="gwt-debug-tooltip-4580983">&nbsp;</span> 
     <br> 
     </div> 
    </div> 

ile İşte python kodu:

print "getting keyword ideas" 
driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.visibility = "visible";') 
driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.display = "block";') 
searches = driver.find_element_by_xpath("//*[contains(text(), 'Avg. monthly searches')]") 
if searches.is_displayed(): 
    print "searches is visible" 
else: 
    print "searches isn't visible" 
avg_monthly_searches = driver.find_elements_by_id("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0") 
for avg in avg_monthly_searches: 
    if avg.is_displayed(): 
     print "element is visible, so clicking ..." 
     actions = ActionChains(driver) 
     actions.click(on_element=avg).perform() 
     time.sleep(10) 
     print "scrolling to the bottom" 
     driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
     print "getting the page source as interpreted by chromedriver" 
     driver.execute_script('return document.documentElement.innerHTML') 
     print "getting keyword ideas source" 
     content = driver.page_source 
     with open('keyword_ideas.html', 'w') as f: 
      f.write(content.encode('utf-8'))  
      time.sleep(5) 
      print "getting html" 
      dom = DOM(content) 
      print "traversing ... " 
      for e in dom('td.spgb-f'): 
       for a in e('a.sptc-e.sptc-h'): 
        print repr(plaintext(a.content))   
    else: 
     print "element isn't visible" 
+0

görünmez eleman – Andersson

+0

@Andersson için 'HTML' kod örneğini sunmak, sana' div' eleman tıklayın istediğinize emin misiniz html parçasını –

+0

ekledik? Gerçekten tıklanabilir mi? – Andersson

cevap

0

deneyin Aşağıdaki kod:

driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.visibility = "visible";') 
driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.display = "block";') 
+0

Kullandığım python kodunu ekledim. Ve aynı adı taşıyan birden fazla kimlik var "gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0" –

+0

wow!) 'Id' benzersiz tanımlayıcı anlamına gelir! sayfada sadece bir öğe olmalı! – Andersson

İlgili konular