我想在新窗口中打开同一窗口中的所有链接。 我试过了
profile.setPreference("browser.link.open_newwindow", 1)
但结果是:
WARNING: traffic.loop 0 error: Preference browser.link.open_external may not be overridden: frozen value=2, requested value=1
是否有另一种方法可以在同一窗口中打开链接?
答案 0 :(得分:1)
我找到了解决方法!
JavascriptExecutor js = (JavascriptExecutor) driver;
String script = "document.getElementById('yourFormOrAnchorId').target=''";
js.executeScript(script);
之后,您可以选择锚点或任何表单元素,然后单击或提交。目标页面将在同一选项卡中打开。
这基本上会更改当前的HTML页面,以便锚点和表单不会强制浏览器打开新的选项卡或窗口。对于测试,这可能不是最理想的,但它简化了测试的编写过程。
答案 1 :(得分:1)
试试这个...... 修改FireFox配置文件参数" browser.link.open_newwindow.restriction" 和" browser.link.open_newwindow"。
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.link.open_newwindow.restriction", 0);
profile.setPreference("browser.link.open_newwindow", 1);
如果您使用的是Google Chrome浏览器,则只需安装this扩展程序即可完成其余任务。此扩展程序也可以方便地在新选项卡中打开弹出窗口,这些弹出窗口通常在新窗口中打开。 (首先,您需要从给定位置下载扩展名.crx文件。)
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
答案 2 :(得分:1)
您应该修改firefox配置文件参数:
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.link.open_newwindow", 3)
profile.set_preference("browser.link.open_newwindow.restriction", 0)
driver = webdriver.Firefox(firefox_profile=profile)
如果此方法不起作用,您可以使用firefox选项设置权限:
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_preference("browser.link.open_newwindow.restriction", 0)
opts.set_preference("browser.link.open_newwindow", 3)
driver = webdriver.Firefox(firefox_options=opts)
(A)browser.link.open_newwindow - 用于Firefox标签中的链接:
3:将新窗口转移到新标签页(默认)
2:允许链接打开一个新窗口
1:强制新窗口进入相同的标签
(B)browser.link.open_newwindow.restriction - 对于Firefox标签中的链接
0:将(A)下的设置应用于所有新窗口(甚至是脚本窗口)
2:将(A)下的设置应用于普通窗口,但不应用于脚本窗口 功能(默认)
1:覆盖(A)下的设置并始终使用新窗口
答案 3 :(得分:0)
根据Selium docs(https://code.google.com/p/selenium/wiki/FirefoxDriver),以下属性webdriver.firefox.profile控制使用的firefox配置文件。
这是firefox从启动时获取browser.link.open_newwindow的地方。要为测试创建新的配置文件,您可以按照此处的说明进行操作https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles可以通过编辑配置文件的pref.js或启动配置文件并通过about:config进行编辑来完成配置文件的详细配置。
希望这有帮助!答案 4 :(得分:0)
在硒配置文件中:
C:\ Python27 \ Lib \ site-packages \ selenium \ webdriver \ firefox \ webdriver_prefs.json
更改以下行:
"browser.link.open_newwindow": 2,
收件人:
"browser.link.open_newwindow": 3,
我对其进行了测试
答案 5 :(得分:-1)
实际上,Selenium不对在新窗口或同一窗口中打开的页面负责。它完全取决于您用于执行的浏览器设置。
为了便于使用Firefox浏览器
如果要在新窗口中打开所有链接。执行这些步骤
Open new windows in a new tab instead.
现在点击打开窗口的链接。它将在同一窗口的新选项卡中打开。