我正在 Firefox 56 (56.0.2)两个标签 >使用 Selenium 3 (3.5.1)和 geckodriver ( 0.19.1)没有运气。在使用Firefox 47的Selenium 2中,我使用类似于上面的代码打开它,但是从这些版本开始它不再起作用了。任何人都知道我该怎么办?
我现在使用的代码:
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class Test {
public static void main(String[] args) {
ProfilesIni prof = new ProfilesIni();
FirefoxProfile profile= prof.getProfile ("default");
profile.setAcceptUntrustedCertificates(true) ;
profile.setAssumeUntrustedCertificateIssuer(false);
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
FirefoxDriver browser = new FirefoxDriver(options);
browser.get("https://www.google.com");
browser.findElement(By.xpath("//body")).sendKeys(Keys.chord(Keys.CONTROL, "t"));
}
}
答案 0 :(得分:0)
正如here所述:
Ctrl-T不是允许从内容运行的快捷方式。那么你 不应该用它来打开新标签。我不明白为什么 多进程功能应该在这里有所作为,以及为什么它应该 关闭它时工作。
正如我们所知道的bug 380637,一些网站会覆盖这些快捷方式。 目前仍然没有适当的解决办法。
如果要打开新选项卡,可以先加载HTML测试用例 https://dxr.mozilla.org/mozilla-central/source/testing/marionette/harness/marionette_harness/www/windowHandles.html 只需单击页面上的元素即可打开新选项卡。
所以你可以这样做:
driver.get("https://www.google.co.uk/");
org.openqa.selenium.JavascriptExecutor js;
if (driver instanceof org.openqa.selenium.JavascriptExecutor) {
js = (org.openqa.selenium.JavascriptExecutor)driver;
}
else {
throw new IllegalStateException("This driver does not support JavaScript!");
}
js.executeScript("window.open('http://www.seleniumhq.org');");
答案 1 :(得分:0)
感谢@Davide,我能够解决它。
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class Test {
public static void main(String[] args) {
ProfilesIni prof = new ProfilesIni();
FirefoxProfile profile= prof.getProfile ("default");
profile.setAcceptUntrustedCertificates(true) ;
profile.setAssumeUntrustedCertificateIssuer(false);
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
options.addPreference("browser.tabs.remote.autostart.2", false); // This is the new line that fixed it
FirefoxDriver browser = new FirefoxDriver(options);
browser.get("https://www.google.com");
browser.findElement(By.xpath("//body")).sendKeys(Keys.chord(Keys.CONTROL, "t"));
}
}