Selenium Python如何修改链接_blank属性避免点击后打开新标签页
错误原因
- 你在
execute_script中直接使用了Python侧定义的gourl变量,JavaScript运行在浏览器沙箱环境中,无法读取Python侧的变量,这行脚本执行时会直接报错。 - 你调用
getElementById('nameofgood')查找元素,但目标元素仅设置了nameofgood类名,没有对应的id属性,无法通过该方法定位到目标元素。 - 原有代码中
browser.execute_script行的缩进多于上一行,不符合Python缩进语法要求,运行会直接抛出语法错误。
修正方案
你可以直接将Python侧定位到的元素作为参数传入JS脚本,直接修改它的target属性,无需二次查找元素:
firefoxProfile = FirefoxProfile() firefoxProfile.set_preference('permissions.default.stylesheet', 2) firefoxProfile.set_preference('permissions.default.image', 2) firefoxProfile.set_preference("dom.popup_maximum", 0) browser = webdriver.Firefox(firefoxProfile) # CSS选择器可以简化,无需写全所有层级 gourl = browser.find_element_by_css_selector("h2 a.nameofgood") # 将定位到的元素作为参数传入JS,arguments[0]对应传入的第一个参数 browser.execute_script("arguments[0].target = '';", gourl) # 直接点击即可,无需额外使用ActionChains gourl.click()
也可以选择更简单的方案,直接读取链接的href属性跳转,无需修改元素属性也无需模拟点击:
gourl = browser.find_element_by_css_selector("h2 a.nameofgood") target_url = gourl.get_attribute('href') browser.get(target_url)
内容的提问来源于stack exchange,提问作者Roman Legasov
相关产品推荐
相关产品推荐

