Python Selenium远程Webdriver(通过Selenium Grid的Chrome Webdriver),已创建但未打开浏览器

时间:2018-11-16 16:06:55

标签: selenium selenium-webdriver selenium-chromedriver remotewebdriver selenium-grid2

我有以下设置:

  1. 运行在“ http://localhost:hubPortNum”上的Selenium服务器中心(带有Jar文件selenium-server-standalone-3.141.5.jar且参数为-role hub的服务)。
  2. 正在运行“ http://localhost:nodePortNum”的Selenium节点(带有Jar文件的服务,其参数为:-Dwebdriver.chrome.driver = ChromeWebdriverPath -role node -port:nodePortNum)。
  3. 我检查了中心和节点实例的URL,以确保它们正常工作。

每当我尝试通过Python脚本创建远程Webdriver时:

import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.Test;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.core.env.StandardEnvironment;

public class EnvironmentProfilesTest {

    @Test
    public void testItWithRealEnvironment() {
        System.setProperty(StandardEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "adrian");
        Environment environment = new org.springframework.core.env.StandardEnvironment();

        ToBeTested toBeTested = new ToBeTested(environment);
        assertTrue(toBeTested.hello("adrian"));
    }

    @Test
    public void testItWithMocklEnvironment() {
        Environment environment = mock(Environment.class);
when(environment.acceptsProfiles(Profiles.of("adrian"))).thenReturn(true);

        ToBeTested toBeTested = new ToBeTested(environment);
        assertTrue(toBeTested.hello("adrian"));
    }

    private static class ToBeTested {
        private Environment env;
        public ToBeTested(Environment env) {
            this.env = env;
        }

        public boolean hello(String s) {
            return env.acceptsProfiles(Profiles.of(s));
        }
    }
}

最后一行确实显示了当前URL(即“ data :,”),这意味着已创建Webdriver。

但是浏览器无法在我的本地计算机上打开,这是因为它在后台运行,尽管它过去曾经工作过,但我不知道如何使其可见。

>

我已完成的故障排除步骤:

  1. 重新安装最新的硒python软件包。
  2. 重新下载最新的Selenium服务器jar文件。
  3. 更新Chrome。
  4. 添加chromeOptionsRemote.add_argument(“-no-sandbox”)
  5. 确保本地Webdriver确实打开了: 那是一行:

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    desiredCapabilities = DesiredCapabilities.CHROME.copy()
    chromeOptionsRemote = webdriver.ChromeOptions()
    chromeOptionsRemote.add_argument("--start-maximized")
    chromeOptionsRemote.add_argument("--disable-session-crashed-bubble")
    
    initRemoteDriver = webdriver.Remote(options=chromeOptionsRemote, command_executor='http://127.0.0.1:<nodePortNum>/wd/hub', desired_capabilities=desiredCapabilities)
    print(initRemoteDriver.current_url)
    

    在本地打开浏览器(Chromedriver在路径中)。

完成这些疑难解答步骤后,我在远程服务器上尝试了相同的配置并获得了相同的结果(浏览器不可见),因此我认为这可能是设计使然。

我应该为浏览器创建什么配置?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我通过Always-Up运行jar文件:https://www.coretechnologies.com/products/AlwaysUp/

问题与会话0隔离有关:https://stackoverflow.com/a/26752251/2710840

为了不在会话0下运行该应用程序,我启用了自动登录功能: enter image description here

定义了以我的用户身份运行的应用程序下的用户: enter image description here

并从上下文菜单中执行该应用程序,并选择:“在此会话中重新启动”

enter image description here