我試圖自動化一個場景,我將鼠標移到一個元素上,然後單擊該子菜單中的另一個元素。我正在使用CSS選擇器並對IE webdriver進行測試。Selenium不會點擊菜單元素,即使它存在
我們的軟件提供4種不同的語言來瀏覽。我的代碼適用於所有3,除1之外。因此,代碼是通用的,不會因任何一種語言而改變。 CSS選擇器是相同的,它可以分爲4種語言中的3種。我測試了20次,3種語言通過100%失敗=總是失敗。
當我做的element.getText() =
對失敗的人,我可以看到我在正確的元素。文本是它應該的。當我做element.click()
,我無處可去。 我試過action.moveToElement.click()
,doubleClicking它。它適用於其他3種語言,但不適用於失敗的語言。所以我非常積極,我的代碼沒問題。如果我手動執行,沒有問題,我只能使用IE驅動程序查看它。
我如何固定它:
作爲工作的時候,我正在讀元素的位置,然後再用java.Robot實際鼠標移動到我的子菜單項,然後單擊它。現在它可以工作,但我仍然想明白爲什麼我遇到了這個問題。
有沒有其他人經歷過這個?
我真的不喜歡我的解決方案,因爲現在如果IE瀏覽器在第二臺顯示器上打開並且我的X和Y位置與主顯示器相關時我的測試失敗。
我很想添加html,但它很複雜,頁面將其作爲html並不顯示它。
我對那部分它有代碼:
element = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("span[widgetid=\"app_schedulesAndPlanningApp\"].dijit.dijitReset.dijitButton")));
action.moveToElement(element, 1, 1).perform();
try {
robot = new Robot();
element = driver.findElement(By.cssSelector("div.appSubMenu ul li.subApp:nth-child(4)"));
location = element.getLocation();
robot.mouseMove(location.getX() + 20, location.getY() + 80);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
你在哪裏看到我的機器人用來做element.click();
似乎很奇怪。你介意添加一個HTML片段+你正在使用的選擇器嗎? –
什麼也奇怪的是,在另一種情況下,我使用這個:\t \t元=等待 \t \t \t \t。直到(ExpectedConditions.presenceOfElementLocated(通過 \t \t \t \t \t \t .cssSelector(「跨度[爲widgetid = \ 「app_schedulesAndPlanningApp \」] dijit.dijitReset.dijitButton「)))。 \t \t action.moveToElement(element)。執行(); \t \t元素= wait.until(ExpectedConditions.presenceOfElementLocated(通過 \t \t \t \t .cssSelector( 「div.appSubMenu UL李:第n個孩子(5)」))); \t \t element.click(); 所以它幾乎是相同的菜單,只是不同的子菜單項和這個代碼爲每個語言工作100% – Gino
粘貼HTML(編輯問題時),選擇它並點擊'代碼示例'按鈕,應格式化它,被展示。另外,失敗的測試給出了什麼錯誤? –