簡體   English   中英

Java Selenium findelement未確認頁面上的元素

[英]Java Selenium findelement is not acknowledging an element that is on the page

如果我在Chrome中使用開發者工具,並粘貼我的By.name語句,該頁面會突出顯示我正在嘗試查看的內容。

這是兩個緊挨着的java語句:

driver.findElement(By.xpath("//input[@name='firstName']")).clear();
driver.findElement(By.xpath("//input[@name='shippingCost']")).click();

我把這兩個放在一起,以排除驅動程序在代碼中的某些方面被破壞了。 第一個語句確實清除了引用的文本框,但第二個語句返回NoSuchElementError。 我也嘗試過使用如上所述的By.name,我只是追逐為什么第二次每次都會拋出一個錯誤。

我正在使用的頁面是一個EXTJS單頁網站,因此控件始終存在。 我想使用.getText()。length()來驗證此框中是否有文本。

任何關於為什么我無法單擊,甚至只是引用此控件的幫助,我可以使用我的xpath或名稱選擇器來查看頁面上的控件。

---編輯將這些代碼的相關圖片添加到上面的xpaths中

對不起,這是另一個不起作用的地方,[name ='shippingTypeGroundDate']

這是shippingcost的位置

這是工作firstName的位置

檢查所選選擇器中是否存在任何重復元素。 根據您的描述,名稱字段按預期工作,您將面臨運費成本字段的問題。 使用所選選擇器的同一頁面上可能存在處於非活動狀態的重復元素。

你可以使用下面的java code獲得元素的數量:

List<WebElement> listOfElements =driver.findElements(By.xpath("//input[@name='shippingCost']")); 
System.out.println("Number of elements:" +listOfElements.size());

如果以上解決方案不起作用,請嘗試使用javascriptexecutor,即使此元素位於另一個元素下,它也會執行這些操作。

添加顯式等待要加載的輸入文本框。 然后嘗試使用Javascript執行程序單擊文本框。 有時webdriver單擊可能無法正常工作。

WebElement element = driver.findElement(By.xpath("//input[@name='shippingCost']"));
try {
        if (element.isEnabled() && element.isDisplayed()) {

                ((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
            } else {
                System.out.println("Unable to click on element");
            }
        } catch (StaleElementReferenceException e) {
            System.out.println("Element is not attached to the page document "+ e.getStackTrace());
        } catch (NoSuchElementException e) {
            System.out.println("Element was not found in DOM "+ e.getStackTrace());
        } catch (Exception e) {
            System.out.println("Unable to click on element "+ e.getStackTrace());
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM