2017-11-18 16 views
-2

그래서 CPS 클래스 용 Magic Mirror를 만들고 브라우저 탭을 사용하여 전체 화면 모드로 여러 개의 디스플레이를 만들었습니다. 디스플레이 중 하나의 경우, 내 27 인치 모니터 (Google이 캘린더 설정에서 제공)에 맞게 확장 된 내장형 Google 캘린더를 갖기를 원했습니다. 캘린더는 Firefox에서 정상적으로 열 때 작동하지만 셀렌을 사용하는 geckodriver로 Firefox를 열면 캘린더가 일반 상태로 표시되며 편집 할 방법이 없습니다. 다른 브라우저에서 .html 페이지를 열어 보았는데 모두 작동합니다. 이것은 다음과 같습니다. GeckoDriver Display, FireFox Display. 캘린더에는 iframe 태그 사용이 포함됩니다.이 태그는 동일한 결과를 갖는 객체 태그로 변경하려고 시도했습니다. 내 파이썬은 각 HTML 파일을 여는와 함께geckodriver로 브라우저를 열 때 내장 된 Google 캘린더를 편집 할 수 없습니다.

<iframe src="https://calendar.google.com/calendar/embed?showTitle=0&amp;showDate=0&amp;showPrint=0&amp;showTabs=0&amp; 
showCalendars=0&amp;height=1810&amp;wkst=1&amp;bgcolor=%23000000&amp;src=tvanderlinden8%40gmail.com&amp;color=%2329527A&amp; 
src=%23contacts%40group.v.calendar.google.com&amp;color=%2329527A&amp;src=en.usa%23holiday%40group.v.calendar.google.com&amp; 
color=%2329527A&amp;ctz=America%2FNew_York" style="border-width:0"width="1000" height="1800" frameborder="0" scrolling="no"></iframe> 

:이 방법으로 "작업"을 수행하기 때문에 오류가 없습니다

# Imports 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

# Create new browser and open all display tabs 

# Open Firefox dir 
driver = webdriver.Firefox() 

# Open google tab 
driver.get('http://google.com') 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 

# Open MagicMirror.html, MagicMirror2.html, and MagicMirror3.html (all 3 displays) 
driver.get('/home/pi/Desktop/MagicMirror/MagicMirror.html') 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 
driver.get('/home/pi/Desktop/MagicMirror/MagicMirror2.html') 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 
driver.get('/home/pi/Desktop/MagicMirror/MagicMirror3.html') 

# Close google tab 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB) 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w') 
# Set webpage to full screen 
driver.find_element_by_tag_name('body').send_keys(Keys.F11) 

# Variable used to determine if display is showing 1st or 3rd display 
disNum = 1 

# Input to change display 
while(True): 
    display = int(input("Please select a display: ")) 

    # Moves right a display unless it is at the last display 
    if (display == 1 and disNum != 3): 
     driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB) 
     disNum += 1 

    # Moves left a display unless it is at the first display 
    if (display == 2 and disNum != 1): 
     driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.SHIFT + Keys.TAB) 
     disNum -= 1 

여기에 iframe이 코드입니다. 그것은 단지 내가 필요로하는 방식으로 작동하지 않습니다.

+1

참조 : [어떻게해야합니까?] (https://meta.stackoverflow.com/questions/253069/whats-the-new-current-close-reason-for-how-do-i- do-x) SO에 대한 기대는 질문을하는 사용자가 자신의 질문에 답하는 연구뿐만 아니라 연구, 코드 시도 및 결과를 공유한다는 것입니다. 이것은 시간을내어 자신을 도우려는 것을 보여 주며, 명백한 답을 되풀이하지 않아도되며, 무엇보다도보다 구체적이고 관련성있는 답변을 얻는 데 도움이됩니다! 또한보십시오 : [ask] – JeffC

+0

코드 재판, 오류 스택 추적 및 HTML을 공유 할 수 있습니까? – DebanjanB

답변

0

나는 완벽하게 작동하는 해결책을 찾아 냈습니다.

<object data="https://calendar.google.com/calendar/embed?showTitle=0&amp;showNav=0&amp; 
showDate=0&amp;showPrint=0&amp;showTabs=0&amp;showCalendars=0&amp;showTz=0&amp;height=1400&amp; 
wkst=1&amp;bgcolor=%23000000&amp;src=tvanderlinden8%40gmail.com&amp;color=%2329527A&amp; 
data=%23contacts%40group.v.calendar.google.com&amp;color=%2329527A&amp; 
src=en.usa%23holiday%40group.v.calendar.google.com&amp;color=%2329527A&amp; 
ctz=America%2FNew_York" style="border-width:0" width="1000" height="1820"></object> 

당신은 데이터 '에 SRC의를'모두를 변경할 생각하고 ',하지만 난 당신이 시작에 불과을 변경하는 경우 발견 % 23contacts % ...에 대한'데이터 '문제를 해결합니다. 캘린더 데이터를 검색 할 수 있도록 Google 계정에 로그인되어 있는지 확인하십시오.