当前位置: 首页 > 知识库问答 >
问题:

使用java运行硒测试时Headless的问题

上官斌
2023-03-14

我在无头模式下运行测试时遇到问题。我在两个不同的地方编写了测试用例(web商店和门户)。同样,我使用Headless,当Headless在web shop中为true时,我的测试工作,但当Headless在门户测试用例中为true时,它们不工作。

组织。openqa。硒。ElementClickInterceptedException:元素单击intercepted:元素在点(480483)处不可单击。其他元素将收到单击:。。。(会话信息:headless chrome=91.0.4472.114)构建信息:版本:'4.0。0-beta-3',版本:“5d108f9a67”系统信息:主机:“moin-mkt-007。本地,ip:'fe80:0:0:1412:539b:3727:1402%en0',操作系统。名称:'MacOSX',操作系统。拱门:“x86_64”,操作系统。版本:'10.14。6',爪哇。版本:'14.0。2’司机信息:org。openqa。硒。铬。ChromeDriver命令:[d05ff1a9794fef32216ef34021b22337,点击元素{id=de6be461-9b49-4e10-8d99-c008af09b8ae}]功能{AcceptSecureCerts:false,browserName:chrome,browserVersion:91.0.4472.114,chrome:{chromedriverVersion:91.0.4472.101(af52a90bf870…,userDataDir:/var/folders/p9/0LHK6LJ7X7…),goog:chromeOptions:{debuggerAddress:localhost:9222},javascriptEnabled:true,networkConnectionEnabled:false,pageLoadStrategy:normal,platform:MAC,platformName:MAC,proxy:proxy(),se:cdp:ws://localhost:9222/devtool。。。,se:CDP版本:91.0。4472.114,setWindowRect:true,StrictFileInteractivity:false,超时:{implicit:0,pageLoad:300000,script:30000},未处理的PromptBehavior:Disease and notify,webauthn:extension:largeBlob:true,webauthn:virtualAuthenticators:true}元素:[[ChromeDriver:chrome on MAC(d05ff1a9794fef32216ef34021b22337)]-

共有3个答案

赵选
2023-03-14
org.openqa.selenium.ElementClickInterceptedException
It display this exception when other element obscures the desired element

try to click on the element with the WebDriverWait locator stretegy

new WebDriverWait(driver,10)
    .pollingEvery(Duration.ofMillis(10))
    .ignoring(ElementClickInterceptedException.class)
    .until(ExpectedConditions
    .elementToBeClickable(By.id("web_element")))
    .click();

As you are executing the script in the headless mode, so
options.addArguments("--headless","--disable-notifications","--window-size=1920,1080")

* this is mentioned in the other answers as well
戚翼
2023-03-14

您需要注意以下几件事:

>

  • 将浏览器分辨率设置为最大:

    driver.maximize_window()
    

    或者如果使用chrome选项:

    options.add_argument("--window-size=1920,1080")
    

    利用动作链:

    ActionChains(driver).move_to_element(your web element here).click.perform()
    

    这将是导入:

    from selenium.webdriver.common.action_chains import ActionChains
    

    您需要传递驱动程序,以代替此处的web元素。查找元素(By.XPATH,“somexpath”)

  • 王长卿
    2023-03-14

    您没有在这里显示代码,但我猜您在无头模式下缺少最大化屏幕
    所以我认为这样的事情应该可以解决你的问题:

    opts.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors");
    
     类似资料:
    • 问题内容: 我在运行Ubuntu的本地计算机上设置Jenkins,将其指向我的jdk,然后进行maven,创建了一个作业来运行我的Selenium测试,并为它提供了项目中pom.xml的路径,但是当我尝试运行该作业时,它立即失败。控制台输出显示 在工作区中构建/ var / lib / jenkins / workspace / new job [new job] $ / usr / share

    • 注: 在testng xml中,如果我将parallel=更改为类或方法,那么它可以很好地运行测试,但它不是并行地一个接一个地运行测试。 如果我保持parallel=“tests”,那么它会并行运行,但它会在同一个VM中打开同一个浏览器三次,这是不正确的。 我的设置: 我设置了11个虚拟机,每个盒子上的每个浏览器都初始化了Selenium网格节点。我已经创建了testng xml,以便在每个框上运

    • 这是我的Java代码: 当我运行它时,会出现以下错误: 我正在使用IntelliJ,安装了chrome驱动程序,但没有解决它,所以任何人都知道这个问题的解决方案??

    • 我创建了一个简单的测试来尝试Junit 5: 这就是我使用的依赖关系: 堆栈跟踪是下一步: 知道哪里出了问题吗?

    • 实际上,我正在创建一个框架,但在创建它时,我只想要它用于串行执行,但现在我想要对方法进行并行测试。问题是,我已经将驱动程序实例声明为静态的,并且由于静态的,第二个线程无法更改它的值。 我在一个单独的类中创建驱动程序,并使用getter方法获取它。 现在的问题是,如果我让Webdrive变成非静态的,那么我就无法在其他类中使用驱动程序。 即使我尝试扩展类(在这里创建驱动程序实例),它也会传递一个空值

    • 我们正在运行使用mspec编写的selenium webdriver测试。 我们使用内置的mspec runner从team city启动这些测试。 这是在服务器上本地使用火狐来运行测试。 我们似乎通过不同数量的成功和失败测试得到随机结果,我们相信这取决于执行速度。我们的测试套件有等待元素,但这些似乎并不总是达到预期效果。 我们有没有办法减缓整个测试套件的执行速度,以尝试缓解这个问题? 还是有更好