2017-01-24 69 views
0

我使用最新的IE和Chrome驅動程序(使用Java 1.8)運行Selenium 3 - 這兩種瀏覽器都適用於我的所有測試。我已經安裝Phantomjs,因爲我們希望這可以在構建服務器上運行。Phantomjs瀏覽器(Selenium)無法在下拉框中選擇一個項目

,因爲它由三個部分組成的dropdownbox是棘手的,請參閱代碼:

//POM 

    @FindBy(how = How.ID,using = "s2id_leads_lead_provider_source_channel") 
    private WebElement dropdownboxLeadProvider; 

    @FindBy(how = How.XPATH,using = "//div[@id='select2-drop']//input[contains(@id,'s2id_autogen')]") 
    private WebElement search_InAnyDropdownbox; 

    @FindBy(how = How.CLASS_NAME,using = "select2-result-label") 
    private List<WebElement> allOptions_InAnyDropdownbox; 

// Code that I use to select item in dropdownbox 
    utilityWebElementExtras.selectItemInDropdownBox(dropdownboxLeadProvider, search_InAnyDropdownbox, allOptions_InAnyDropdownbox,"Broker"); 

// this is the method in the class that I use 
    public static void selectItemInDropdownBox(WebElement dropdownbox,WebElement inputSearch,List<WebElement> allOptionsList,String selectedItem){ 

     browser.ExplicitWait(dropdownbox); 
     dropdownbox.click(); 

     browser.ExplicitWait(inputSearch); 
     inputSearch.sendKeys(selectedItem); 

     browser.ExplicitWaitList(allOptionsList); 

     int counter = 0; 
     for (WebElement i: allOptionsList) { 
      System.out.println("test3"); 
      if (i.getText().trim().equals(selectedItem)) { 
       allOptionsList.get(counter).click(); 

       break; 
      } 
      counter++; 
     } 

    } 

出於某種原因,當我運行此,幻影驅動程序無法皮卡dropdownbox,以及它看起來像它看到它但它不能做任何事情,例如,如果我做.click或.Sendkeys(keys.Enter)或.SendKeys(「test」),它什麼都不做。如果它失敗了,當它嘗試用於輸入搜索時,它將無法看到它,因爲在HTML中它被禁用/隱藏,只有在您單擊下拉框時纔會在HTML中啓用/取消隱藏。什麼嘗試的任何想法將appraciated?最後一件事情看起來像是它拿起屏幕Web元素的其餘部分,例如我可以使用文本框和單選按鈕。

回答

0

我確實找到了解決方案,它是web元素定義的方式。

例如

@FindBy(how = How.ID,using = "s2id_leads_lead_provider_source_channel") 
private WebElement dropdownboxLeadProvider1; 

//But since I used XPath, Phantomjs was able to execute dropdownboxLeadProvider1.click(); 

@FindBy(how = How.XPATH,using = "//div[@id='s2id_leads_lead_provider_source_channel']//a//span[contains(@id,'select2-chosen-')]") 
private WebElement dropdownboxLeadProvider1; 

它看起來像Phantomjs它真正想要的是自動生成的ID,因爲使用的x路指定自動生成的ID - 它的作品,我可以點擊dropdownbox。

相關問題