2017-09-13 41 views
1

您好我有蟒的問題在硒selenium.common.exceptions.ElementNotVisibleException:消息:元件不可見

第一我有此代碼

#load webdriver function from selenium 
from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from time import sleep 
from bs4 import BeautifulSoup, Comment 
import pandas as pd 


#Setting up Chrome webdriver Options 
#chrome_options = webdriver.ChromeOptions() 

#setting up local path of chrome binary file 
#chrome_options.binary_location = 
"/Users/Norefly/chromedriver2/chromedriver.exec" 

#creating Chrome webdriver instance with the set chrome_options 
driver = webdriver.Chrome("/Users/Norefly/chromedriver2/chromedriver") 
link = "https://play.google.com/store/apps/details? 
id=com.supercell.clashofclans&hl=en" 
driver.get(link) 
Ptitle = driver.find_element_by_class_name('id-app- 
title').text.replace(' ','') 
print(Ptitle) 
sleep(1) 
driver.find_element_by_xpath 
('//*[@id="body- 
content"]/div/div/div[1]/div[2]/div[2]/div[1]/div[4] 
/button[2]/div[2]/div/div').click() 
sleep(1) 
#driver.find_element_by_css_selector('.review-filter.id-review-sort- 
filter.dropdown-menu-container').click() 
driver.find_element_by_css_selector('.displayed-child').click() 
#driver.find_element_by_xpath("//button[@data-dropdown- 
value='1']").click() 
driver.execute_script("document.querySelectorAll('button.dropdown- 
child')[0].click()") 
reviews_df = [] 



for i in range(1,10): 
    try: 
     for elem in driver.find_elements_by_class_name 
('single-review'): 
      print(str(i)) 
      content = elem.get_attribute('outerHTML') 
      soup = BeautifulSoup(content, "html.parser") 
      #print(soup.prettify()) 
      date = soup.find('span',class_='review-date').get_text() 
      rating = soup.find('div',class_='tiny-star')['aria-label'] 
[6:7] 
      title = soup.find('span',class_='review-title').get_text() 
      txt = soup.find('div',class_='review- 
body').get_text().replace('Full Review','')[len(title)+1:] 
      print(soup.get_text()) 
      temp = pd.DataFrame({'Date':date,'Rating':rating,'Review 
Title':title,'Review Text':txt},index=[0]) 
      print('-'*10) 
      reviews_df.append(temp) 
    except: 
     print('s') 
    driver.find_element_by_xpath('//*[@id="body- 
    content"]/div/div/div[1]/div[2]/div[2]/div[1]/div[4]/button[2] 
    /div[2]/div/div').click() 


    reviews_df = pd.concat(reviews_df,ignore_index=True) 

    reviews_df.to_csv(Ptitle+'_coc1.csv', encoding='utf-8') 

driver.close() 

和我有這個錯誤

Traceback (most recent call last): 
File "reviewex.py", line 54, in <module> 
    driver.find_element_by_xpath('//*[@id="body- 
content"]/div/div/div[1]/div[2]/div[2]/div[1] 
/div[4]/button[2]/div[2]/div/div').click() 
    File 
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/selenium/webdriver/remote/webelement.py", line 78, in click 
self._execute(Command.CLICK_ELEMENT) 
File 
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/selenium/webdriver/remote/webelement.py", line 499, in 
_execute 
return self._parent.execute(command, params) 
File 
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/selenium/webdriver/remote/webdriver.py", line 297, in execute 
self.error_handler.check_response(response) 
File 
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/selenium/webdriver/remote/errorhandler.py", line 194, in 
check_response 
raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: element 
not visible 
(Session info: chrome=60.0.3112.113) 
(Driver info: chromedriver=2.32.498537 
(cb2f855cbc7b82e20387eaf9a43f6b99b6105061),platform=Mac OS X 10.12.6 
x86_64) 

和我有這個問題... selenium.common.exceptions.ElementNotVisibleException:消息:元素不可見 我thougt下一頁的審查時間短l加載時間 所以我嘗試'webdriverwait'和'times.leep',但它沒有奏效。 爲什麼這個問題...請幫助我...

回答

0

這是硒的司令問題, 項目尚未加載,你想要接觸該項目。

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

elm = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'yourelement id '))) 

你可以在這裏 http://selenium-python.readthedocs.io/waits.html

詳情另一種方式是明確的等待,

寫你在哪裏得到錯誤

import time 
time.sleep(10) 
+0

我已經運行兩個前行這些代碼代碼之前,但它不工作。我的代碼位置錯了嗎?你能告訴我確切的位置嗎? –