【问题标题】:Opening new tab from string url从字符串 url 打开新选项卡
【发布时间】:2018-11-15 17:55:07
【问题描述】:

所以我试图在 Chrome 上打开一个新标签页,其中 URL 是一个字符串。我这样做是因为动作链或键似乎都不起作用。此代码的目的是从选定元素打开一个新选项卡,但我似乎无法打开具有正确网站的新页面。

from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import random

chromedriver = "\Program Files\webdrivers/chromedriver"

driver = webdriver.Chrome(chromedriver)

driver.get("https://google.com")

time.sleep(3)

for a in driver.find_elements_by_xpath('//*[@id="prm"]/div/a'):
    A = str(a.get_attribute('href'))
    driver.execute_script("window.open('A');")

【问题讨论】:

  • 给定 url [google.com] 的 xpath 是否正确?找不到任何这样的定位器。
  • 它来自荷兰谷歌网站,但您可以使用任何有效的 xpath。我只是想让它工作

标签: python selenium selenium-webdriver


【解决方案1】:

您正在打开一个 URL 为“A”的新窗口。它被视为字符串,因为您没有传入变量,只是一个字母。试试

driver.execute_script("window.open(arguments[0]);", A)

【讨论】:

  • 我不小心在arguments[0] 周围留下了单引号。我已经更新了答案……现在可以了。
【解决方案2】:

要在单独的 TAB 中打开 hrefs,正确的语法应该是:

for a in driver.find_elements_by_xpath('//*[@id="prm"]/div/a'):
    A = str(a.get_attribute('href'))
    driver.execute_script("window.open('" + A +"');")

【讨论】:

  • 有没有办法关闭同一个选项卡并返回初始状态?这就是,不用关闭整个浏览器?
  • @LourençoSaint-Maurice Of-coarse 有一种更更简洁的方式来关闭新打开的标签,并在不关闭整个浏览器的情况下保持对初始标签的关注。
猜你喜欢
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多