如何使用Selenium Python打开新窗口

时间:2019-11-07 13:44:32

标签: python selenium selenium-webdriver selenium-chromedriver

我正在网站上进行自动化。

我在此站点上进行搜索,您的结果返回一个链接供我访问,单击该链接可打开一个新标签,但我想打开一个新窗口

这是我点击链接的代码

WebDriverWait(self.browser, timeout=60).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="tabelaResultado"]/div[1]/table/tbody[1]/tr/td[1]/span/a'))).click()

我尝试使用SHIFT键盘快捷键

WebDriverWait(self.browser, timeout=60).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="tabelaResultado"]/div[1]/table/tbody[1]/tr/td[1]/span/a'))).send_keys(Keys.SHIFT).click()

但是我有结果错误

  

AttributeError:'NoneType'对象没有属性'click'

有没有一种方法可以配置chrome,因此每次单击链接都会打开一个新窗口?

from selenium.webdriver.chrome.options import Options

2 个答案:

答案 0 :(得分:1)

send_keys()作为无返回值,因此您得到None。您可以使用ActionChains

from selenium.webdriver import ActionChains

link = WebDriverWait(self.browser, timeout=60).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="tabelaResultado"]/div[1]/table/tbody[1]/tr/td[1]/span/a')))
ActionChains(driver).key_down(Keys.SHIFT, link).click().key_up(Keys.SHIFT).perform()

答案 1 :(得分:1)

我认为您必须这样发送 Shift Enter

WebDriverWait(self.browser, timeout=60).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="tabelaResultado"]/div[1]/table/tbody[1]/tr/td[1]/span/a'))).send_keys(Keys.SHIFT,Keys.ENTER)