单击标签以使用Selenium打开新标签

时间:2019-11-28 13:25:29

标签: python-3.x selenium

我只希望relevent <td>类单击标签,并且必须通过在新选项卡上将其打开来实现。这是我的代码:

x1=driver.find_element_by_class_name('no').send_keys(Keys.COMMAND + 't') 

enter image description here

2 个答案:

答案 0 :(得分:1)

请尝试以下操作:

x1=driver.find_element_by_class_name('no') 


ActionChains(driver).key_down(Keys.COMMAND).click(x1).key_up(Keys.COMMAND).perform() 

browser.switch_to.window(browser.window_handles[1])

答案 1 :(得分:1)

这里的一个问题是td中有多个class='no'元素,因此很难确定您需要单击哪个元素。由于列表中的第二个元素已突出显示,因此我们可以假设您尝试单击第二个a链接。

听起来您正在尝试获取a元素,以便您可以单击链接,然后单击该链接将打开一个新标签。您首先需要找到a才能单击,然后将焦点切换到新打开的标签页:

from selenium.webdriver.support.ui import WebDriverWait


# get number of currently open windows
windows_before = len(driver.window_handles)

# click link -- [2] specifies which one to click, change this to click different one
driver.find_element_by_xpath("//td[@class='no'][2]/a").click()

# wait up to 10s for new tab to open, then switch focus to new tab
WebDriverWait(driver, 10).until(lambda driver: len(windows_before) != len(driver.window_handles))

# switch to new window
driver.switch_to_window(len(driver.window_handles)-1)

上面的代码首先使用driver.window_handles存储当前打开的选项卡的数量。然后,一旦单击第二个 a元素以打开event328706602.html链接,就会在打开的窗口数上调用WebDriverWait。请注意,您需要根据需要单击哪个[2]元素来更新XPath中的a

WebDriverWait中,我们等待窗口的数量比以前存储的值大 ,因此我们知道新窗口已经打开。然后,通过检查len(driver.window_handles)切换到新窗口句柄,并切换到列表的最后window_handle索引。