在新标签页中打开“ href”变量

时间:2019-01-23 15:20:03

标签: python selenium automation selenium-chromedriver

我正在将selenium和chrome webdriver用于python。

我正在尝试将“ href”存储在变量中(在本示例中为“ link”),然后在新标签页中打开它。

我知道如何使用这种方式在新标签页中打开专用网站:

driver.execute_script("window.open('http://www.example.com', 'newtab')")

但是使用windows.open脚本仅接受直接文本(据我所知),而不接受变量。

以下是代码:

link = driver.find_element_by_class_name('asset-content').find_element_by_xpath(".//a[@class='mr-2']").get_attribute("href") #assigning 'href' into link variable. works great. 
driver.execute_script("window.open(link, 'newtab')") #trying to open 'link' in a new tab

错误:

unknown error: link is not defined

还有其他方法可以在新标签页中打开“链接”变量吗?

2 个答案:

答案 0 :(得分:1)

在脚本中传递参数不会将其视为url,请尝试使用此参数。它对我有用。

driver.execute_script("window.open('{},_blank');".format(link))

请让我知道是否可行。

答案 1 :(得分:1)

您将字符串传递给execute_script,因此,从字面上传递的不是链接,而是链接的值(连接):

export interface MongoRequest {
  _id: MongoObjectId;
  requiredProp: boolean;
  optionalProp?: boolean;
}

async function read (
  query: MongoRequestQuery,
  mongo: any,
): Promise<MongoRequest> {
  const m = mongo.collection(MongoCollections.REQUESTS);
  return new Promise((resolve, reject) => {
    try {
      return m.findOne(query, (err, result) => {
        if (err) return reject(err);
        if (result === null) return reject(new Error(`null mongo ${MongoCollections.REQUESTS}`));
        return resolve(result);
      });
    } catch (e) {
      return reject(e);
    }
  });
}

src/MongoRequests.ts (142,5): Type '{}' is not assignable to type 'MongoRequest'.
  Property '_id' is missing in type '{}'. (2322)

打开标签页的另一种方法是将CTRL + T发送到浏览器:

driver.execute_script("window.open('"+link+"','icoTab');")

如上所述,您可以在28431765/open-web-in-new-tab-selenium-python

中找到更多信息