Python 如何在当前web浏览器中发送快捷键?

Python 如何在当前web浏览器中发送快捷键?,python,selenium,Python,Selenium,我正在尝试发送一些快捷键,以便使用python中的selenium在chrome中打开一个新选项卡。我打开facebook,然后登录,然后我想打开一个新标签,在那里我可以传递我一个朋友的url,这样我就可以查看他的个人资料。我编写了以下代码: from selenium import webdriver from selenium.webdriver.common.keys import Keys import getpass driver = webdriver.Chrome() #ope

我正在尝试发送一些快捷键,以便使用python中的selenium在chrome中打开一个新选项卡。我打开facebook,然后登录,然后我想打开一个新标签,在那里我可以传递我一个朋友的url,这样我就可以查看他的个人资料。我编写了以下代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import getpass

driver = webdriver.Chrome()

#opening browser and loging into the account
def login():
    driver.get("http://www.facebook.com")
    elem = driver.find_element_by_xpath("//*[@id=\"email\"]")
    elem.send_keys("myUsername")
    password = driver.find_element_by_name("pass")
    password.send_keys("myPassword")
    elem.send_keys(Keys.RETURN)
    driver.implicitly_wait(5)

def scout():
    scroll =     driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
    driver.get("http://www.facebook.com/some.friend")
    driver.implicitly_wait(8)

login()
scout()
但它给了我一个错误:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

我让浏览器隐式等待,但仍然找不到标记。请提供帮助。

首先,尝试调用
WebDriverWait
而不是
find\u element\u by\u css\u selector
来查找元素。它每隔半秒调用
find\u element\u by
,直到给定超时。这样,您就不必在
中暗中等待
time.sleep()
下赌注。 关于打开新标签的问题-你不能将ctrl+t发送到chromedriver,它根本不会做任何事情(不过它可以在firefox上工作)。我以前遇到过这个问题,我找到的最佳解决方案是在网站本身中搜索链接,因此如果你在Facebook上,你可以使用左上角的F图标。然后,您可以发送ctrl+shift+单击以在新选项卡中打开它

        from selenium.webdriver import ActionChains
        actions = ActionChains(driver);
        actions.move_to_element(link)
        actions.send_keys(Keys.CONTROL+ Keys.SHIFT)
        actions.click(link)
        actions.perform()
从这里开始,您只需使用

        tabs = driver.window_handles
        driver.switch_to.window(tabs[<index>])
tabs=driver.window\u句柄
驱动程序.切换到.窗口(选项卡[])

快速问题:ActionChains(驱动程序)中的类型(驱动程序)是否为webdriver元素?否。它是驱动程序对象。“链接”将是web元素