Bonjour, je suis confronté à une erreur mentionnée ci-dessous . Je ne peux pas cliquer sur le bouton de l'acheteur tel que mentionné dans la capture d'écran . J'ai essayé d'attendre, les fonctions de veille aussi . ce. Quelqu'un peut-il m'aider?.
Quelqu'un peut-il m'aider s'il vous plaît dans ceci: - Le code d'élément d'inspection est Le code est: -
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>
Quelqu'un peut-il m'aider? Quelqu'un peut-il m'aider? Est-ce que quelqu'un peut m'aider? .. Quelqu'un peut-il m'aider?.
Tout d’abord, vérifiez que l’élément est bien dans votre cadre.
Si ce n'est pas le cas, vous devrez passer au bon cadre pour cliquer sur l'élément:
driver.switchTo().frame(driver.findElement(By.name("iframeWithElement")));
En outre, vous pouvez effectuer plusieurs étapes pour améliorer la stabilité en cliquant sur différents éléments de l'interface utilisateur:
Est-ce que cela a aidé la stabilité?
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")));
Donc, par exemple, si je travaille sur le site , je vais utiliser Wait.until(ExpectedConditions.presenceOfElement(By.class("article-feed-title")));
Peut être causé par ce bogue existant: https://bugzilla.mozilla.org/show_bug.cgi?id=1422272
J'ai eu un problème similaire dans Firefox mais (première fois quand je clique sur Hover-menu, il est capable d'activer l'élément principal, puis je clique sur le sous-élément mais pour la deuxième fois, j'ai essayé de cliquer sur un autre sous-élément je reçois une erreur) . Erreur: "L'élément ne peut pas défiler dans la vue" . J'ai ouvert le sous-menu suivant dans une autre fenêtre qui fonctionnait pour moi.
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");
}
Vous pouvez essayer cette version qui défile jusqu'à la position x, y de l'élément:
public static void scrollIntoView(WebElement ele) {
((JavascriptExecutor)driver).executeScript("window.scrollTo(" + ele.getLocation().x + "," + ele.getLocation().y + ")");
}
J'ai eu le même problème dans Firefox (dans Chrome et Opera, cela fonctionne bien). Essayez de changer JavascriptExecutor en Actions:
Actions action = new Actions(driver);
action.moveToElement(element).click().perform();
Au lieu de scrollingToView, cliquez simplement sur cet élément
driver.execute_script("arguments[0].click();", element)