使用geckodriver打开浏览器时无法编辑嵌入式Google日历

时间:2017-11-18 04:51:09

标签: selenium calendar geckodriver

所以我正在为我的CPS课程制作一个魔术镜,我做了它,所以它将在全屏模式下使用浏览器标签进行多次显示。对于其中一个显示器,我希望将嵌入式Google日历缩放到适合我的27英寸显示器(Google从日历设置中提供)。当我在Firefox中正常打开日历时,日历会起作用,但是当使用gelenodriver使用selenium打开Firefox时,日历会显示,但是处于通用状态,并且无法编辑它。我试过在其他浏览器中打开.html页面,它们都有效。这就是它的样子: GeckoDriver DisplayFireFox Display。 日历涉及使用iframe标记,我尝试将其更改为具有相同结果的对象标记。这是iframe代码:

<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>

随着我的Python打开每个html文件:

# 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

没有错误,因为它在某种程度上“有效”。它只是不能按我需要的方式工作。

1 个答案:

答案 0 :(得分: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>

您可以考虑将所有内容更改为“数据”,但我发现如果您只更改了开头,并且%23将%...更改为“&” #39;数据&#39;解决了这个问题。确保您已登录Google帐户,以便检索日历数据。