我正在使用python selenium phantomjs
脚本,我需要点击一个按钮(内容存储区),然后在浏览器上打开一个新窗口我希望我的脚本按照重定向跳转到新打开window ..我已经尝试使用find_element_by_tag_name
,找到elemnt_by_id
和find_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()
答案 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
返回可用的上下文(标签)列表,新打开的标签将位于最后一个索引中,因此使用否定索引选择最后一个上下文。