如何在Python的Selenium Webdriver中禁用在新标签页中打开页面?

6

我正在爬取这个网站:http://www.delhidistrictcourts.nic.in/DLCIS-2016-2.html

这个页面上有很多链接。用户可以通过Selenium Web Driver 点击任何一个链接。问题是,当用户点击这些链接时,它们会在新标签页中打开,因为所有链接都有一个 "_target=blank" 属性。

你有什么办法可以强制链接在同一标签页中打开吗?

以下是我编写的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
url = 'http://www.delhicourts.nic.in/DLCIS-2016-2.html'

driver=webdriver.Chrome()
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)

try:
    wait.until(EC.presence_of_element_located((By.CLASS_NAME, "submit1"))).click()
except Exception as e:
    print str(e)

enter image description here

1个回答

6
你可以尝试更新@target的值:
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "CASE NUMBER WISE")))
driver.execute_script("arguments[0].target='_self';", link)
link.click()

为了应用于页面上的所有链接:
links = wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, "a")))
for link in links:
    driver.execute_script("arguments[0].target='_self';", link)

或者提取链接的 @href 并使用 get() 方法获取它:
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "CASE NUMBER WISE")))
url = link.get_attribute('href')
driver.get(url)

非常感谢您的帮助,@Anderson。link = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "submit1"))) 是一个表单提交(提交按钮),而不是链接。 - Kiran
是的,但你的问题中没有链接的代码,所以...只需将相同的应用于链接节点即可。 - Andersson
这是我缺失的代码部分。用户将从多个链接中进行选择,这些链接将带他到新的标签页。该标签页上有一个表单,我已经编写了上面的代码。 - Kiran
如何强制链接在同一标签页中打开?假设链接已经找到...您需要定位链接还是在同一页中打开它?请相应更新您的问题。 - Andersson
没错。我不会知道链接,因为URL中有许多链接。每个链接都会在新标签页中打开一个页面。我需要在同一页中打开用户点击的链接。我将使用额外的截图修改问题。 - Kiran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接