按照python selenium phantomjs脚本重定向

时间:2016-11-16 14:01:42

标签: python-2.7 selenium phantomjs

我正在使用python selenium phantomjs脚本,我需要点击一个按钮(内容存储区),然后在浏览器上打开一个新窗口我希望我的脚本按照重定向跳转到新打开window ..我已经尝试使用find_element_by_tag_name,找到elemnt_by_idfind_element_xpath ..但没有任何工作

这是该按钮的正文

<a href="/performAction?view=contentStore" id="contentStoreLiId" title="Content Store" class="TabImg" style="" onclick="return linkOnclick(this)">Content Store</a>

这是我正在处理的示例代码

from selenium import webdriver
from  selenium.webdriver.common.desired_capabilities import DesiredCapabilities

user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) " +"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36")
dcap = dict(DesiredCapabilities.PHANTOMJS)

dcap["phantomjs.page.settings.userAgent"] = user_agent
driver = webdriver.PhantomJS(desired_capabilities=dcap,service_args=['--ignore-ssl-errors=true'])
driver.set_window_size(1120, 550)
driver.get('https://abc/performAction?view=userLogin')
driver.save_screenshot('/ab/login.png')
driver.find_elements_by_id('userName')[0].send_keys('abc123')
driver.save_screenshot('/ab/username.png')
driver.find_elements_by_id('password')[0].send_keys('abc')
driver.save_screenshot('/ab/userpwd.png')
driver.find_element_by_class_name('submitbtn').click()
driver.save_screenshot('/ab/Home.png')
link = driver.find_element_by_xpath('.//*[@id="contentStoreLiId"]')
print link
link.click()
driver.save_screenshot(/ab/CS0.png')
driver.quit()

1 个答案:

答案 0 :(得分:1)

如果单击该按钮打开一个新选项卡,则必须将驱动程序上下文切换到该选项卡。否则,虽然打开了新标签,但驱动程序仍将位于第一页。点击后你可以像这样切换上下文:

link = driver.find_element_by_xpath('.//*[@id="contentStoreLiId"]')
print link
link.click()
driver.switch_to_window(driver.window_handles[-1]) 

driver.window_handles返回可用的上下文(标签)列表,新打开的标签将位于最后一个索引中,因此使用否定索引选择最后一个上下文。