it-swarm.com.de

Selen: - Element konnte nicht in die Ansicht gescrollt werden

Hallo, ich bin mit einem Fehler konfrontiert, der unten aufgeführt ist ..__ Ich kann nicht auf den Button des Käufers klicken, wie im Screenshot erwähnt .. Ich habe versucht zu warten, Schlaffunktionen funktionieren auch, aber es ist nicht möglich, darüber hinauszugehen diese. Kann mir jemand dabei helfen.

Kann mir bitte jemand dabei helfen: - Überprüfen Sie den Elementcode Code lautet: - 

driver.findElement(By.name("login")).click();  //Click on login button
    System.out.println("hello world-----4");

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {

        e.printStackTrace();
    }   
    System.out.println("hello world-----5");
    WebElement element = driver.findElement(By.xpath("//*
[@id=\"modeuser\"]/div/ul/li[3]"));
    ((JavascriptExecutor) 
driver).executeScript("arguments[0].scrollIntoView(true);", element);
    element.click();                                                                                    
//Click on usertype



Error:-  

Exception in thread "main" 
org.openqa.Selenium.ElementNotInteractableException: Element <li 
class="buyer_border changeusermode "> could not be scrolled into view
Build info: version: '3.9.0', revision: '698b3178f0', time: '2018-02-
05T14:56:13.134Z'
System info: Host: 'CLAVAX-PC-93', ip: '192.168.2.122', os.name: 'Windows 
10', os.Arch: 'AMD64', os.version: '10.0', Java.version: '1.8.0_161'
Driver info: org.openqa.Selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, 
browserVersion: 58.0.2, javascriptEnabled: true, moz:accessibilityChecks: 
false, moz:headless: false, moz:processID: 14260, moz:profile: 
C:\Users\Rahul\AppData\Loca..., moz:webdriverClick: true, pageLoadStrategy: 
normal, platform: XP, platformName: XP, platformVersion: 10.0, rotatable: 
false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}


HTML is :- 

<div class="right hide-on-med-and-down head_right_mar" id="modeuser">
               <!--  <div class="toggleWrapper">
                  <input class="dn" type="checkbox" id="dn" value="1"/>
                  <label class="toggle" for="dn"><span class="toggle__handler"></span></label>
                </div> -->

                <div class="right_toggle">
                                            <ul>
                        <li data-get="seller" class="changeusermode active">
                            <span>Seller</span>
                                                                <span class="nav_span">On</span>

                        </li>


                        <li class="mid_toggle">  
                            <div class="switch">
                            <label>

                              <input class="changeusermode_btn" type="checkbox" data-on="Yes" data-off="No">
                              <span class="lever"></span>
                            </label>
                          </div>
                        </li>


                        <li data-get="buyer" class="buyer_border changeusermode ">
                            <span>Buyer</span>

                                <span class="nav_span">Off</span>                                     

                        </li>
                    </ul>
                </div>


            </div>

Kann mir jemand dabei helfen. Kann mir jemand dabei helfen. Kann mir jemand dabei helfen ..__ Kann mir jemand dabei helfen?.

6
RAHUL

Stellen Sie zunächst sicher, dass sich das Element in Ihrem Frame befindet.

Ist dies nicht der Fall, müssen Sie zum richtigen Frame wechseln, um auf das Element zu klicken:

driver.switchTo().frame(driver.findElement(By.name("iframeWithElement")));

Darüber hinaus können Sie eine Reihe von Schritten ausführen, um die Stabilität beim Klicken auf verschiedene Elemente der Benutzeroberfläche zu verbessern:

  • Explizit Wartet auf seine Präsenz im DOM
  • Blättern Sie in die Elementansicht
  • Prüfen Sie, ob anklickbar

Hat es der Stabilität geholfen?

WebDriverWait wait = new WebDriverWait(driver, 3)
JavascriptExecutor js = ((JavascriptExecutor) driver)

//presence in DOM
wait.until(ExpectedConditions.presenceOfElement(By.id("ID")));

//scrolling
WebElement element = driver.findElement(By.id("ID")));  
js.executeScript("arguments[0].scrollIntoView(true);", element);

//clickable
wait.until(ExpectedConditions.elementToBeClickable(By.id("ID")));

Wenn ich zum Beispiel an der site arbeite, benutze ich Wait.until(ExpectedConditions.presenceOfElement(By.class("article-feed-title")));

7
Stas

Kann durch diesen vorhandenen Fehler verursacht werden: https://bugzilla.mozilla.org/show_bug.cgi?id=1422272

3
Mike Cook

Ich hatte ein ähnliches Problem in Firefox, aber (das erste Mal, wenn ich auf das Hover-Menü klicke, kann ich das Hauptelement aktivieren. Dann klicke ich auf das Unterelement, aber zum zweiten Mal, als ich versuchte, ein anderes Unterelement anzuklicken Ich bekomme Fehler). Fehler: "Element kann nicht in die Ansicht gescrollt werden" . Ich habe das nächste Untermenü in einem anderen Fenster geöffnet, das für mich funktioniert hat.

WebElement element = driver.findElement(By.xpath("//div[2]/ul/li[3]/a"));
WebDriverWait wait = new WebDriverWait(driver, 30); //here, wait time is 20 sec
wait.until(ExpectedConditions.visibilityOf(element)); //this will wait for element to be visible for 20 seconds
element.click(); //now it clicks on element
Thread.sleep(8000);
driver.findElement(By.xpath("//li[3]/ul/li/a")).click();

if(driver.getTitle().equals("Invoice Search")) {

test4.log(LogStatus.PASS, "Navigated to Invoice Search Page");
}
2
srinu ratnala

Sie können diese Version ausprobieren, die zur x, y-Position des Elements blättert:

public static void scrollIntoView(WebElement ele) {
    ((JavascriptExecutor)driver).executeScript("window.scrollTo(" + ele.getLocation().x + "," + ele.getLocation().y + ")");
}
2
Bill Hileman

Ich hatte das gleiche Problem in Firefox (in Chrome und Opera funktioniert es gut). Versuchen Sie, JavascriptExecutor in Aktionen zu ändern:

Actions action = new Actions(driver);
action.moveToElement(element).click().perform();
0
Radek Sip

Ich hatte das gleiche Problem (aber in NodeJS ), nicht in Java.

Ich habe den Firefox-Treiber unter MacOS verwendet.

Das Problem war: Firefox war unter MacOS langsam. Es wurde also noch gestartet und die ersten Testbefehle ignoriert. Wenn beabsichtigt war, auf eine Schaltfläche zu klicken, war diese Schaltfläche tatsächlich nicht vorhanden.

Was hat mein Problem behoben?

Bevor ich etwas getestet habe, habe ich diese Sleep-Funktion geschrieben:

const sleep = (waitTimeInMs) => new Promise(resolve => setTimeout(resolve, waitTimeInMs))

und ich habe es ausgeführt mit:

await driver.get('http://localhost:8080/webapp/')
await sleep(5000)
// tests after that

alternative:

sleep(5000).then(() => {
  // tests here
});

Das war genug Zeit, um Firefox zu starten und die Testbefehle dann ordnungsgemäß auszuführen.

0
ndsvw

Anstelle von scrollingToView klicken Sie einfach auf dieses Element 

driver.execute_script("arguments[0].click();", element)
0
Zoran Pandovski