【问题标题】:Webdriver: Locate typefield via placeholder text then text via sendkey("test text") into the typefieldWebdriver:通过占位符文本定位输入框,然后通过 sendkey("test text") 将文本定位到输入框
【发布时间】:2020-07-29 11:04:27
【问题描述】:

我一直在尝试将文本发送到具有更改元素 id=PolarisTextField83 的文本字段,每次登录到页面时(PolarisTextField## 不断更改其值,如 id=PolarisTextField45),因为我发现 id元素是动态的,HTML 中唯一的静态和独特部分是占位符示例文本,即 placeholder="e.g. Shirts"

因此,我想知道是否有办法找到placeholder="e.g. Shirts",然后将文本发送到其各自的类型字段(PolarisTextField##)?

我试过用

driver.findElementsByTagName("e.g. Shirts").sendKeys("test text");

但了解到我无法在findElementsByTagName 之后关注.sendKeys()

我是 java 和 selenium 的新手,如果有任何帮助和/或指导,我将不胜感激!

【问题讨论】:

    标签: java selenium xpath css-selectors webdriverwait


    【解决方案1】:

    您可以使用 XPath 按占位符值查找元素

    driver.findElement(By.xpath("//*[@placeholder='e.g. Shirts']")).sendKeys("test text");
    

    【讨论】:

      【解决方案2】:

      试试下面的xpath来处理动态网页元素。

      WebDriverWait wait = new WebDriverWait(driver, 30);
      driver.findElement(By.xpath("//*[starts-with(@id,'PolarisTextField')]")).sendKeys("Test");
      

      【讨论】:

        【解决方案3】:

        要在元素中发送字符序列,您可以使用以下任一Locator Strategies

        • 使用css_selectoridplaceholder属性:

          driver.findElement(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']")).sendKeys("test text");
          
        • 使用xpathidplaceholder属性:

          driver.findElement(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]")).sendKeys("test text");
          

        理想情况下,要在元素中发送字符序列,您必须为elementToBeClickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

        • cssSelector:

          new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']"))).sendKeys("test text");
          
        • xpath:

          new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]"))).sendKeys("test text");
          

        【讨论】:

          猜你喜欢
          • 2021-03-29
          • 1970-01-01
          • 2023-03-27
          • 2022-07-02
          • 2020-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-11
          相关资源
          最近更新 更多