public static void DoCloseActiveTabEntire() { Element tab = new Element(byTab); tab.Hover(); // CLose button is not clickable. Cannot use standard BUTTON for find Button close = new Button(byClosePanelButton); close.Click(); }
3 Réponses :
C'est bizarre. Mais remplacer avec p> et fonctionne. J'ai lu que la construction est intégrée. Mais j'étais un peu frappant à l'espoir d'espoir que quelque chose est tombé. Et cela a fonctionné. P> p>
Bien me colorier confus. Cela avait fonctionné. Pas ça ne marche plus. Encore une fois, bord uniquement. Le code "Hover" s'exécute sans erreur. Mais le bouton censé être visible n'est pas causé à l'erreur.
Effectuer () code> Effectuer () est la méthode de commodité pour effectuer les actions sans appeler Build () code> Premier. P>
Build () Code> H2>
Build () génère une action composite contenant toutes les actions jusqu'à présent, prêtes à être effectuées et réinitialise également l'état du constructeur interne, les appels ultérieurs vers Build () code> contiendra des séquences fraîches. p>
cette useposase h2>
dans votre usecase, vous avez invoquée exécuter () code> juste après MOVETOELEMENT (WebElement) Code> sans générer l'action composite à effectuer à l'aide de Build () CODE>. P>
Solution h2>
une solution directe serait d'invoquer build () code> avant Effectuer () Code> comme suit: P> public void Hover()
{
Actions action = new Actions(BrowserWindow.Instance.Driver);
action.moveToElement(WebElement).build().perform();
}
En espérant uplifier tous vos peeps utiles. Mais alors que cela a fonctionné pour une poignée de tentatives, cela échoue maintenant. Le code de navigation s'exécute sans erreur. Mais le bouton censé être rendu visible ne causait pas de cliquer pour échouer. Bord uniquement.
Alors, je ne sais pas pourquoi je pensais la construction (). Effectuer () le travail. Je sais que ça a fonctionné une fois. Ce que j'ai fini en faisant, c'est garder le code de navigation de la même manière.
public static void DoCloseActiveTabEntire() { // So there is a defect in EDGE whereby the behavior of the code containted in the hover on the tab executes without // error but the action underneath does not occur. So in Edge, callng the hover method of the TAB as seen in the else condition // below does nto display the CLOSE button which needs to be clicked. // So for Edge, javascript is used to display the button directly. IWebElement close; if (BrowserWindow.Instance.Browser == BrowserWindow.Browsers.Edge) { close = BrowserWindow.Instance.Driver.FindElement(byClosePanelButton); string js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible'; arguments[0].style.display='inline';"; IWebDriver driver = BrowserWindow.Instance.Driver; IWebElement element = close; ((IJavaScriptExecutor)driver).ExecuteScript(js, element); } else { Element tab = new Element(byTab); tab.Hover(); close = new Button(byClosePanelButton).WebElement; } close.Click(); }
Regarde, comme son problème connu, probablement toujours pas corrigé. Github.com/seleniumHq/selenium/issues/4605
Confusion depuis le commentaire que vous avez lié à dire "devrait être pris en charge dans la version 10586" et ce pilote est de nombreuses versions passées.
Oui je l'ai vu. J'ai également eu un problème avec Edge, lorsque j'essayais d'ouvrir un lien spécial, mais cela se brisait. Il s'agissait d'un problème connu que j'ai trouvé un bogue signalé sur Microsoft Web Site a été indiqué que ce problème est fixé au bord de l'Edge 15, mais cela n'est toujours pas fixé même dans la version 18, donc idk.
Avez-vous essayé de planer sur des éléments imbriqués ou un élément parent? L'événement 'Onhover' pourrait être traité sur un élément différent.