Selenium 打开弹出窗口 [Python]

4 投票
2 回答
1776 浏览
提问于 2025-04-18 07:56

我正在尝试通过以下方式点击一个链接:

driver.find_element_by_css_selector("a[href='javascript:openhistory('AXS0077')']").click()

这种方法在链接在新窗口打开时效果很好,但在这个情况下,链接实际上是打开一个弹出窗口。当我尝试用这种方法点击链接时,使用selenium会给我一个错误:

错误信息:u"给定的选择器 a[href='javascript:openhistory('AXS0077')'] 要么无效,要么没有返回一个WebElement。发生了以下错误: \nInvalidSelectorError: 指定了一个无效或非法的选择器"

这不是正确的方法吗?因为我觉得可能有其他方法来处理弹出窗口。

2 个回答

0

我发现使用 find_by_xpath 更有效。

以这个网站为例 弹出窗口

我用 firebug 来检查 元素,然后获取 xpath

接着使用下面的代码就能完美运行。

from selenium import webdriver

baseurl="http://www.globalrph.com/davescripts/popup.htm"

dr = webdriver.Firefox()
dr.get(baseurl)
dr.find_element_by_xpath("/html/body/div/center/table/tbody/tr[7]/td/div/table/tbody/tr/td[2]/div[1]/form/table/tbody/tr[4]/td[1]/a").click()
2

你的CSS选择器可以写得更通用一些,比如:

driver.find_element_by_css_selector("a[href^='javascript']").click()

你那里的引号有点乱,可能会让人搞混。

撰写回答