selenium下拉列表中的元素不可见异常

selenium下拉列表中的元素不可见异常,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我在承运商下拉列表中获取元素不可见异常。我尝试了隐式等待、显式等待和所有id、类、XPath、CSS选择器方法来查找元素。请帮我找到正确的XPath。在“选择承运商”下拉列表中显示元素不可见异常错误消息。多谢各位 <select class="form-control error" id="smsCarrier" name="smsCarrier" required="" data-required-message="Carrier is required." aria-required=

我在承运商下拉列表中获取元素不可见异常。我尝试了隐式等待、显式等待和所有id、类、XPath、CSS选择器方法来查找元素。请帮我找到正确的XPath。在“选择承运商”下拉列表中显示元素不可见异常错误消息。多谢各位

<select class="form-control error" id="smsCarrier" name="smsCarrier" required="" data-required-message="Carrier is required." aria-required="true" aria-invalid="false">
    <option value="-1">Select a Carrier</option>
    <option value="@message.alltel.com">Alltel</option>
    <option value="@txt.att.net">AT&amp;T</option>
    <option value="@myboostmobile.com">Boost Mobile</option>
    <option value="@sms.cricketwireless.net">Cricket Wireless</option>
    <option value="@msg.fi.google.com">Project Fi</option>
    <option value="@text.republicwireless.com">Republic Wireless</option>
    <option value="@messaging.sprintpcs.com">Sprint</option>
    <option value="@tmomail.net">T-Mobile</option>
    <option value="@email.uscc.net">US Cellular</option>    

<select class="form-control error" id="smsCarrier" name="smsCarrier" required="" data-required-message="Carrier is required." aria-required="true" aria-invalid="false">
        <option value="-1">Select a Carrier</option>
        <option value="@message.alltel.com">Alltel</option>
        <option value="@txt.att.net">AT&amp;T</option>
        <option value="@myboostmobile.com">Boost Mobile</option>
        <option value="@sms.cricketwireless.net">Cricket Wireless</option>
        <option value="@msg.fi.google.com">Project Fi</option>
        <option value="@text.republicwireless.com">Republic Wireless</option>
        <option value="@messaging.sprintpcs.com">Sprint</option>
        <option value="@tmomail.net">T-Mobile</option>
        <option value="@email.uscc.net">US Cellular</option>
        <option value="@vtext.com">Verizon</option>
        <option value="@vmobl.com">Virgin Mobile</option>
    </select>


    I used Fluent wait.

     public void ContinueWhenReady(By locator, int timeout)
                {
                    for (int i = 0; i < 2; i++)
                    {

                        try
                        {
                            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
                            IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(locator));

                            break;
                        }
                        catch (Exception e)
                        {

                        }

                    }
                }

        //PhoneNumberDetails details = table.CreateInstance<PhoneNumberDetails>();

                    ContinueWhenReady(By.CssSelector("#smsCarrier"), 50);
                    var SelectaCarrierDropDown = driver.FindElement(By.CssSelector("#smsCarrier"));
                    SelectaCarrierDropDown.Click();
                    var selectaCarrierElement = new SelectElement(SelectaCarrierDropDown);
                    //selectaCarrierElement.SelectByText(details.SelectaCarrier);
                    selectaCarrierElement.SelectByValue("@myboostmobile.com");

正如其他人所提到的,您的问题并没有详细到足以了解您的确切问题,但在使用Selenium中的下拉列表时,我可以指出一些常见的问题

首先,您需要确保select已实际加载到页面上,然后再尝试查找它。因此,您可能需要使用WebDriverWait来实现这一点。例如:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("smsCarrier")));
carrierSelect.selectByVisibleText("Boost Mobile");
然后,您可以尝试查找下拉列表并将其存储在WebElement中:

WebElement carrierDropdown = driver.findElement(By.id("smsCarrier"));
诀窍是,要使用下拉列表,您需要将该WebElement包装到选择对象中:

Select carrierSelect = new Select(carrierDropdown);
从那里,您可以使用该选择对象上的方法对其进行操作,例如从下拉列表中选择一个选项。例如:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("smsCarrier")));
carrierSelect.selectByVisibleText("Boost Mobile");


希望有帮助

在JAVA中,您可以执行以下操作:

WebDriverWait wait = new WebDriverWait(driver, 10);
Select dropdown = new Select(wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("smsCarrier")))));  
dropdown.selectByVisibleText("Cricket Wireless");

你要找的是哪一个元素?如果你需要帮助,你必须给我们更多的细节,Sudeep,到目前为止你做了什么?您到底想做什么?共享您试图选择元素的selenium代码。您还尝试选择哪个元素?public void continuewhen repayby locator,int timeout{for int i=0;i<2;i++{try{WebDriverWait wait=new WebDriverWaitdriver,TimeSpan.FromSecondstimeout;IWebElement元素=wait.untelexpectedconditions.ElementToBeClickablelocator;break;}捕获异常e{}}当READYBY.CSSSELECTORSMCARRIER,50;var SELECTACARERDROPDOWN=driver.FindElementBy.CSSSELECTORSMCARRIER;SELECTACARERDROPDOWN。单击;var SELECTACARERRELENT=new SELECTELEMENT SELECTACARERRELENT;SELECTACARERIARRIER瑞雷特。SelectByValue@myboostmobile.com;