Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

click Function does not correspond to top-left corner of the element

Offen
#38 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
javascript, php
Bereich
testing-qa

Rechercherichtung

Beginne damit, clickWithLeftButton und moveMouseOver mit der bereitgestellten Konfiguration für Firefox, Selenium und geckodriver zu reproduzieren, und vergleiche das Offset-Verhalten mit Chrome. Verwende die mitgelieferten JavaScript-Offsetmessungen als Referenz; abgeschlossen ist die Aufgabe, wenn das angeforderte Offset in den Firefox-Akzeptanztests die beabsichtigte Ecke des Elements auswählt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

What are you trying to achieve?

We are trying to click an element in a webpage.

What do you get instead?

Wrong element (the left or the right element) gets clicked instead. Based on the documentation here clickWithLeftButton with offset should place the cursor on the upper left corner of the element, but with extensive testing, we've found out that the position of the cursor is actually at the center of the element. Note that we are writing acceptance tests for a web application. The same code works fine with Chrome (configuration below) but it does not work well with Selenium/Gecko/Firefox. We are using an RTL language (Persian) in UTF-8.

Part of the code that is failing :

        $I->moveMouseOver($class,10,10);
        $I->wait(1);
        $I->clickWithLeftButton($class,10,10);
Details

Codeception : 4
PHP : 7.2 Remi
Selenium : 3.8.1 with enablePassThrough function
Geckodriver : 0.26.0
Mozilla Firefox : 72.0.1
OS : Windows 10

acceptance.suite.yml:

# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.

actor: AcceptanceTester
modules:
    enabled:
        - \Helper\Acceptance
        - WebDriver
        - Db
        - Asserts
    depends:
        - Db:
        - WebDriver:
        - Asserts:
    url: 'http://localhost/'
    config:
        WebDriver:
             url: 'http://localhost/'
             port: 4444
        Db:
            dsn: 'mysql:host=1.1.1.1;dbname=mysql;charset=utf8'
            user: 'root'
            password: 'password'
            populate: false
            cleanup: false
            reconnect: true

env:
    firefox:
        modules:
            config:
                WebDriver:
                  url: 'http://localhost/'
                  window_size: 1920*1080
                  browser: firefox
                  capabilities:
                    acceptInsecureCerts: true
                    unexpectedAlertBehaviour: 'accept'
                    binary: "/opt/firefox/firefox-bin"
    chrome:
        modules:
            config:
                WebDriver:
                  url: 'http://localhost/'
                  window_size: 1920*1080
                  browser: chrome
                  capabilities:
                     chromeOptions: # additional chrome options
                       args: ["--no-sandbox", "--disable-notifications", "--start-maximized", "--disk-cache-dir=null", "--aggressive-cache-discard", "--disable-dev-shm-usage"]

After a lot of trial-and-errors, we eventually fixed our problem using the following code. The code uses JS functionalities to find the width and height of an element, then moves the cursor and selects the top right corner (This is where we found out that its not selecting the top left corner) :


        $width = 'var a = document.evaluate(\''.$class.'\', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.offsetWidth; return a;';
        $width = $I->executeJS($width);
        var_dump($width);
        $height = 'var a = document.evaluate(\''.$class.'\', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.offsetHeight;  return a;';
        $height = $I->executeJS($height);
        var_dump($height);

        $I->moveMouseOver($class,(($width/2)),0);
        $I->wait(1);
        $I->clickWithLeftButton($class,(($width/2)),0);

Let me know if more information is needed.

Vorherrschende Sprache
PHP
Sterne
39
Forks
25
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Codeception/module-webdriver

Alle Issues in Codeception/module-webdriver

Ähnliche Issues

Weitere Issues zu PHP

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.