【问题标题】:open 'href' variable in a new tab在新选项卡中打开“href”变量
【发布时间】:2019-06-17 05:33:26
【问题描述】:

我在 python 中使用 selenium 和 chrome webdriver。

我正在尝试将“href”存储在变量中(本示例中为“链接”)并在新选项卡中打开它。

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

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

我可以通过其他方式在新标签中打开“链接”变量吗?

【问题讨论】:

  • 注意:@Benjamin 最好提供整个代码,以便可以重现和处理错误,因为用户不会编写代码来重现错误。否则,您将获得通用解决方案

标签: python selenium automation selenium-chromedriver


【解决方案1】:

在scripts中传参数不把url当做url试试这个。它对我有用。

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

如果这行得通,请告诉我。

【讨论】:

  • 嗨,'driver.execute_script("window.open('{},_blank');".format(link))' 给了我一个错误但是! 'driver.execute_script("window.open('{});".format(link))' 工作!感谢您教我另一种处理方式。我很感激。
  • @Benjamin,上面提到的代码应该也可以工作。我不知道为什么它不工作。我已经测试过,然后在这里发布。无论如何,谢谢。如果它真的有帮助,那很重要
  • 另一个视角,不错!
【解决方案2】:

您将一个字符串传递给execute_script,因此不要按字面意思传递“链接”,而是传递链接中的值(连接):

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

另一种打开选项卡的方法是将 CTRL+T 发送到浏览器:

driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
driver.get(link)

如前所述,您可以在这里找到更多信息28431765/open-web-in-new-tab-selenium-python

【讨论】:

  • 感谢老兄,它成功了! “+link+”是我缺少的语法,因为我是 python 新手。我很感激。
猜你喜欢
  • 2019-06-14
  • 2012-01-22
  • 2012-04-25
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多