我应该如何最好地与一个this<;李>;来自SeleniumJavaWebDriver

我应该如何最好地与一个this<;李>;来自SeleniumJavaWebDriver,java,selenium,selenium-webdriver,selenium-ide,Java,Selenium,Selenium Webdriver,Selenium Ide,我正在尝试与Nike shoe在线商店互动,登录,然后从列表中选择鞋码,然后按Selenium的Java WebDriver中的“添加到购物车”按钮: 首先,我似乎找不到正确的元素并选择了它,我需要一些关于如何操作的建议 我发现我的代码不适用于选择鞋码:pastebin.com/6K1RpPKL(在第一次响应时由善良的用户指导)。首先,如果您想要更健壮的测试编写(如flash),您应该远离IDE。对于您的登录问题,这很简单 使用您的测试将如下所示: @Config(url="http

我正在尝试与Nike shoe在线商店互动,登录,然后从列表中选择鞋码,然后按Selenium的Java WebDriver中的“添加到购物车”按钮:

首先,我似乎找不到正确的
  • 元素并选择了它,我需要一些关于如何操作的建议


    我发现我的代码不适用于选择鞋码:pastebin.com/6K1RpPKL(在第一次响应时由善良的用户指导)。

    首先,如果您想要更健壮的测试编写(如flash),您应该远离IDE。对于您的登录问题,这很简单

    使用您的测试将如下所示:

    @Config(url="http://store.nike.com/us/en_us/pd/air-max-2014-running-shoe/pid-830258/pgid-774364")
    public class NikeTest extends AutomationTest {
        @Test
        public void testNike() {
            click   (By.cssSelector("div.login.nav-section > a"))
            .setText(By.cssSelector("form[name='login-form] input[name='email']"),    "<My Username>")
            .setText(By.cssSelector("form[name='login-form] input[name='password']"), "<My Password>")
            .click  (By.cssSelector("form[name='login-form] button.exp-login-submit")
            
            // now we're logged in.
    
            // let's select a size of shoe.
            .click  (By.cssSelector("div.exp-pdp-size-and-quantity-container > a.exp-pdp-size-dropdown") // now it's expanded.
    
            .selectOptionByText(By.cssSelector("select[name='skuAndSize']"), "10.5") // you can replace 10.5 with whatever option you need.
        }
    }
    
    @Config(url=”http://store.nike.com/us/en_us/pd/air-max-2014-running-shoe/pid-830258/pgid-774364")
    公共级NikeTest扩展了AutomationTest{
    @试验
    公共无效测试{
    单击(By.cssSelector(“div.login.nav-section>a”))
    .setText(由.cssSelector(“form[name='login-form]input[name='email']”)编写)
    .setText(由.cssSelector(“form[name='login-form]input[name='password']”)指定)
    。单击(由.cssSelector(“form[name='login-form]按钮.exp login submit”)
    //现在我们登录了。
    //让我们选择一个鞋码。
    。单击(通过.cssSelector(“div.exp-pdp-size-and-quantity-container>a.exp-pdp-size-dropdown”)//现在它已展开。
    .selectOptionByText(By.cssSelector(“select[name='skuAndSize']),“10.5”)//您可以用所需的任何选项替换10.5。
    }
    }
    
    这些是一些你可以使用的CSS选择器。另外,就你的Flash而言,我认为你运气不好,伙计。我还没有听说过任何非常成功的自动化Flash的解决方案

    这里有一个关键点:
    确保您知道哪个元素正在接收点击。Selenium IDE在确定哪个元素正在接收点击方面做得不好。我猜它是在尝试
  • 时,而实际上是
    使下拉列表下降。

    li中的元素类型不是select。请使用改为使用下面的代码,它可以正常工作

    WebElement shoeSizes = driver.findElement(By.xpath("//div[contains(@class,'exp-pdp-size-container')]/a"));
    shoeSizes.click(); // Expanded
    String shoeSize = "8.5";
    WebElement shoeSizeSel = driver.findElement(By.xpath("//li[text()='"+shoeSize+"']"));
    shoeSizeSel.click(); // Size selected
    driver.findElement(By.xpath("//div[@class='exp-pdp-save-container']/button")).click(); // Added to cart
    

    就建议而言,在提出此类问题之前,您应该首先学习识别元素、使用定位器等基础知识。浏览以下内容:,。网络上提供了许多此类资源。

    您是一个非常有用的用户!对于我前面提到的鞋码,
  • 如何。我知道IDE是一种不好的方法,但它提供了当我不熟悉API时,这是我的一个起点。对!我将添加到我的帖子中。此外,我链接的selenium入门框架对新用户非常有帮助。如果你阅读该repo中的自述,你就会明白为什么!我发现我的代码不适用于选择鞋码: