Selenium打开弹出窗口 [Python]

4
我正在尝试通过以下方式点击链接:
driver.find_element_by_css_selector("a[href='javascript:openhistory('AXS0077')']").click()

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

消息:u“给定的选择器a[href='javascript:openhistory('AXS0077')']无效或没有导致WebElement。发生以下错误:\nInvalidSelectorError:指定了无效或非法的选择器"

这不是正确的方式吗?因为我认为处理弹出窗口可能有一些不同的方式。


2
尝试使用以下代码:driver.find_element_by_css_selector("""a[href='javascript:openhistory("AXS0077")']""").click()driver.find_element_by_css_selector("""a[href="javascript:openhistory('AXS0077')"]""").click() - falsetru
2个回答

2
您的CSS选择器可以更加通用,例如:
driver.find_element_by_css_selector("a[href^='javascript']").click()

你的引号有各种奇怪的重叠,可能会导致混淆。


0

我使用find_by_xpath的成功率更高。

以这个网站为例:popups

我使用firebug来检查element和获取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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接