我想用 selenium 多任务测试,不想开多个浏览器,只想在一个浏览器里面多标签操作。我参照网上的代码写了如下的。可是多窗口总是不行,二个关键字都输入到一个标签了。有人帮忙看看吗?
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from concurrent.futures.thread import ThreadPoolExecutor
url = 'https://www.baidu.com/'
keys = ['java', 'python', 'go']
def openwin(url):
newwindow = f'window.open("{url}")'
browser.execute_script(newwindow)
browser.switch_to.window(browser.window_handles[-1])
handle = browser.current_window_handle
sleep(2)
print(handle)
return handle
def outer(keyword):
def browser_work(res):
handle=res.result()
print(handle)
if browser.current_window_handle != handle:
browser.switch_to.window(handle) # 移动句柄,对新打开页面进行操作
print('browser is working...')
el_location = browser.find_element(By.XPATH, '//*[@id="kw"]')
el_location.clear()
el_location.send_keys(keyword)
el_location = browser.find_element(By.XPATH, '//*[@id="su"]')
el_location.click()
sleep(3)
browser.close()
browser.switch_to.window(browser.window_handles[0])
return browser_work
ts=[]
options = Options()
options.add_argument("--no-sandbox")
options.add_argument('--disable-gpu')
options.add_argument('window-size=1920x1080')
browser = webdriver.Chrome(options=options)
browser.get("https://bing.com/")
POOL = ThreadPoolExecutor(2)
for i in keys:
futrue = POOL.submit(openwin,url)
futrue.add_done_callback(outer(i))
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.