我正在将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
还有其他方法可以在新标签页中打开“链接”变量吗?
答案 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');")
中找到更多信息