【问题标题】:Selenium Webdriver Auto complete Text BoxSelenium Webdriver 自动完成文本框
【发布时间】:2017-01-29 08:15:59
【问题描述】:

我一直在尝试在网站上进行注册过程,我有用户使用以下脚本,

    package agent;

    import java.util.regex.Pattern;
    import java.awt.List;
    import java.util.concurrent.TimeUnit;
    import org.junit.*;
    import static org.junit.Assert.*;
    import static org.hamcrest.CoreMatchers.*;
    import org.openqa.selenium.*;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.FluentWait;
    import org.openqa.selenium.support.ui.Select;
    import org.openqa.selenium.support.ui.WebDriverWait;

    public class TaxRegistration {
      private static final TaxRegistration Driver = null;
    private WebDriver driver;
    WebDriverWait wait;
      private String baseUrl;
      private boolean acceptNextAlert = true;
      private StringBuffer verificationErrors = new StringBuffer();
      private By tagText = By.id("AddressDetails_City");


      @Before
      public void setUp() throws Exception {
        System.setProperty("webdriver.chrome.driver","E:/Vignesh/Automation/New folder (2)/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        wait = new WebDriverWait(driver, 5);
        baseUrl = "http://govreports.com.au/dev/taxagentt1.html";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }

      @Test
      public void testBASFormWebdriver() throws Exception {
          driver.get("http://govreports.com.au/dev/taxagentt1.html");
            driver.findElement(By.id("BAS")).click();
            Thread.sleep(1000);
            driver.findElement(By.id("TFND")).click();
            Thread.sleep(1000);
            driver.findElement(By.id("PAYG")).click();
            Thread.sleep(1000);
            driver.findElement(By.id("TPAR")).click();
            Thread.sleep(1000);
            //((JavascriptExecutor)driver).executeScript("scroll(0,2000)");
            Thread.sleep(1000);
            driver.findElement(By.id("OUT")).click();
            Thread.sleep(1000);
            //((JavascriptExecutor)driver).executeScript("scroll(0,1000)");
            Thread.sleep(1000);
            driver.findElement(By.id("BUL")).click();
            Thread.sleep(1000);
            driver.findElement(By.id("NUL")).click();
            Thread.sleep(1000);
            driver.findElement(By.id("IUL")).click();
            Thread.sleep(1000);
            //((JavascriptExecutor)driver).executeScript("scroll(0,6000)");
            Thread.sleep(1000);
            driver.findElement(By.cssSelector("a.btn.btn-default > b")).click();
            Thread.sleep(2000);
            driver.findElement(By.id("AgentNo")).clear();
            driver.findElement(By.id("AgentNo")).sendKeys("78301003");
            driver.findElement(By.id("AgentName")).clear();
            driver.findElement(By.id("AgentName")).sendKeys("Vignesh Check");
            driver.findElement(By.id("SendQuote")).click();
            Thread.sleep(2000);
            driver.findElement(By.xpath("(//input[@name='plancodeTPAR'])[2]")).click();
            driver.findElement(By.xpath("(//input[@value='1'])[9]")).clear();
            driver.findElement(By.xpath("(//input[@value='1'])[9]")).sendKeys("2");
            driver.findElement(By.id("Proceed")).click();
            Thread.sleep(5000);
            driver.findElement(By.id("ABN")).click();
            driver.findElement(By.id("ABN")).clear();
            driver.findElement(By.id("ABN")).sendKeys("19087046080");
            driver.findElement(By.id("BusinessName")).click();
            Thread.sleep(2000);
            driver.findElement(By.id("Username")).clear();
            driver.findElement(By.id("Username")).sendKeys("vikireg02@govreports.com.au");
            driver.findElement(By.id("Password")).clear();
            driver.findElement(By.id("Password")).sendKeys("Viki2607");
            driver.findElement(By.id("ConfirmPassword")).clear();
            driver.findElement(By.id("ConfirmPassword")).sendKeys("Viki2607");
            String capColorDropDown = "//span[@role='listbox']";
            driver.findElement(By.xpath(capColorDropDown)).click();
            String itemName = "Orange";
            String listId = "color_listbox";
            Thread.sleep(2000);
            String xpathForItem = "//ul[@id='Salutation_listbox']/li[@class='k-item' and text()='Mr']";
            driver.findElement(By.xpath(xpathForItem)).click();
            driver.findElement(By.id("FirstName")).click();
            driver.findElement(By.id("FirstName")).clear();
            driver.findElement(By.id("FirstName")).sendKeys("Vignesh");
            driver.findElement(By.id("LastName")).click();
            driver.findElement(By.id("LastName")).clear();
            driver.findElement(By.id("LastName")).sendKeys("Ks");
            driver.findElement(By.id("TelephoneAreaCode")).click();
            driver.findElement(By.id("TelephoneAreaCode")).clear();
            driver.findElement(By.id("TelephoneAreaCode")).sendKeys("02");
            driver.findElement(By.id("TelephoneNumber")).click();
            driver.findElement(By.id("TelephoneNumber")).clear();
            driver.findElement(By.id("TelephoneNumber")).sendKeys("2356895623");
            driver.findElement(By.id("AddressDetails_Line1")).clear();
            driver.findElement(By.id("AddressDetails_Line1")).sendKeys("Walker Street");

//我必须从下拉值中选择城市(自动完成文本框)我在下面的行中使用了这个,但它不适合我

**`

driver.findElement(By.id("AddressDetails_City")).click();`
    wait.until(ExpectedConditions.presenceOfElementLocated(tagText));
                WebElement textBoxElement = driver.findElement(tagText);
                textBoxElement.sendKeys("sydn");
                selectOptionWithText("SYDNEY, NSW, Australia, 1001");
                //selectOptionWithIndex(0);**
                Thread.sleep(2000);
                driver.findElement(By.linkText("Next")).click();
                Thread.sleep(2000);
    }


      private void selectOptionWithIndex(int i) {
        // TODO Auto-generated method stub

    }

    private void selectOptionWithText(String string) {
        // TODO Auto-generated method stub

    }

    @After
      public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
          fail(verificationErrorString);
        }
      }

      private boolean isElementPresent(By by) {
        try {
          driver.findElement(by);
          return true;
        } catch (NoSuchElementException e) {
          return false;
        }
      }

      private boolean isAlertPresent() {
        try {
          driver.switchTo().alert();
          return true;
        } catch (NoAlertPresentException e) {
          return false;
        }
      }

      private String closeAlertAndGetItsText() {
        try {
          Alert alert = driver.switchTo().alert();
          String alertText = alert.getText();
          if (acceptNextAlert) {
            alert.accept();
          } else {
            alert.dismiss();
          }
          return alertText;
        } finally {
          acceptNextAlert = true;
        }
      }
    }

我无法在地址部分填写城市、州、邮政编码和国家/地区字段。我无法访问这些字段中的自动完成值。我在脚本中用 ** 符号突出显示了问题区域。

我认为该网站可以公开访问。谁能帮我解决一下。

【问题讨论】:

    标签: javascript jquery selenium webdriver


    【解决方案1】:

    您能否单独评论该网址,因为您在脚本中提到的网址是“因不活动而注销”。

    【讨论】:

    • 你现在可以试试有问题的更新脚本吗?我已将脚本中的 baseUrl 更改为govreports.com.au/dev/taxagentt1.html
    • 我刚刚浏览了你的脚本,你能告诉我你对脚本的期望吗,因为没有 cmets 和所有已经给出我无法得到预期的结果.
    • 我将脚本一分为二,我需要从自动完成下拉菜单中选择城市字段。我已经划分并显示了我使用特定评论的确切行。但这对我不起作用。请提出一些解决方案以从下拉列表中获取城市字段。
    • 你能给出这个城市对象所在页面的url吗?
    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2010-09-22
    • 2012-10-18
    相关资源
    最近更新 更多