当前位置: 首页 > 知识库问答 >
问题:

选择菜单时出错

贲永思
2023-03-14

以下是为主页编写的类,http://www.royalmailgroup.com/ 我试图点击“关于我们”链接和FOI联系人。

package sample.keyword;

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.internal.Coordinates;
import org.openqa.selenium.internal.Locatable;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.events.internal.EventFiringMouse;


 public class FeeToPay {

    public static WebElement Menu, SubMenu ;
    public static InternetExplorerDriver driver;
    //public static FirefoxDriver driver;
    public static EventFiringWebDriver eDriver;
    public static EventFiringMouse eMouse;
    public static String xpathMainMenu ="//div[@class='content']/ul/li/span/*";


public void OpenApplication(String Url) throws Exception{

            File file = new File("D:\\Software\\IEDriverServer.exe");
            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
            driver= new InternetExplorerDriver();

            //driver = new FirefoxDriver();
            eDriver= new EventFiringWebDriver(driver);
            eMouse= new EventFiringMouse(eDriver, null);
            driver.manage().window().maximize();
        try{
            String baseUrl = "http://www.royalmailgroup.com/";
            this.driver.get(baseUrl);

        }
        catch(Exception E){
                throw E;
        }
    }
    public static EventFiringWebDriver getWebDriver(){
        return eDriver;
    }
    public void NavigateTo(String strMenuPath) throws Exception {
    if(strMenuPath == null || strMenuPath.isEmpty())throw new Exception("no menu path mentioned");

    String [] MenuItems = strMenuPath.split("->");
    java.util.List<WebElement> liMenuItems;
    liMenuItems= FeeToPay.getWebDriver().findElements(By.xpath(xpathMainMenu));


    for (int counter =0; counter<MenuItems.length;counter++ ){

        if(counter==0){
            if(liMenuItems.get(counter).getText().equalsIgnoreCase(MenuItems[counter])){
                Locatable item = (Locatable)liMenuItems.get(counter);
                Coordinates c =  item.getCoordinates();
                eMouse.mouseMove(c);
                                }

       }
        if(counter!=0 && counter == MenuItems.length-1 ){
            eDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                WebElement ele = eDriver.findElement(By.linkText(MenuItems[counter]));
                ele.click();
        }
     }

} }

[VerboseTestNG]失败:"sample.keyword.FeeToPayTest"-sample.keyword.FeeToPayTest.testOpenApplication()在9033毫秒内完成[VerboseTestNG]org.openqa.selenium.ElementNotVisibleException:驱动程序试图单击元素的点没有滚动到视口。(警告:服务器没有提供任何堆栈跟踪信息)[VerboseTestNG]命令持续时间或超时:1.93秒

我正在使用Selenium Jar构建信息:版本:'2.28.0',修订版:'18309',系统信息:os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.6。0_37'

共有1个答案

於意蕴
2023-03-14

需要添加WebDriverWait wait=new WebDriverWait(eDriver,10);wait.until(ExpectedConditions.elementtobelickable)(通过.linkText(MenuItems[counter]));单击子菜单项之前。

 类似资料:
  • 选择菜单摒弃了原生的select 元素的样式,原生的select元素被隐藏,并被一个由jquery mobile框架自定义样式的按钮和菜单替代。菜单是ARIA的(即Accessible Rich Internet Applications)并且桌面电脑的键盘也是可访问的。 当被点击时,手机自带的原生的菜单选择器会打开。菜单内某个值被选中后,自定义的选择按钮的值更新为你选择的那一个。 要添加这样的选

  • AutoHotKey2如何弹出菜单 选择后SendText这个选择?

  • 问题内容: 我正在尝试更改select option边界,但是无法做到这一点,我已经尝试了很多次,但是找不到合适的解决方案。我已经附上了屏幕截图。 问题答案: 选择的下拉列表是所谓的ShadowDOM的一部分。在当前的CSS规范第3级中,无法定位大多数ShadowDOM元素。您可以在此处阅读有关ShadowDOM的规范,尽管关于所需内容的内容并不多。 Chrome有一些专有的选择器可以更改某些 s

  • 问题内容: 我试图使用AngularJS创建一个链接/级联的下拉列表(选择元素),但是我很难用我的对象属性过滤和更新“ selected”属性。 首次加载页面时,所选项目将被过滤并正确显示在下拉菜单中。更改父级下拉菜单后,子级选择项不会抓住已过滤列表中的第一个项,导致子级下拉项不会更新。 任何见解将不胜感激,请注意,我将父/子/孙子数组分开(而不是在子数组中),因为最终我将从SQL中的单独spoc

  • 我是使用selenium ide的新手。 我已经让我的代码的所有其他部分工作。 但是我目前有一个问题,让它在下拉菜单中选择一个选项。 我为下拉列表和

  • 我正在使用选择一个菜单从