【问题标题】:How to get live locators during run time in selenium webdriver如何在 selenium webdriver 运行时获取实时定位器
【发布时间】:2018-02-06 05:26:59
【问题描述】:

我正在自动化一个包含一些操作的网页,但这些操作元素经常更改,从而导致异常。有没有办法在运行时获取实时元素或 selenium webdriver 中的任何其他解决方案?

环境:Eclipse phone m4Java 8Selenium Webdriver 3.8.1Chrome 64Windows 8

代码sn-p:

driver.get("https://www.qcommission.com");
driver.switchTo().frame("60343815682962");
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath(".//*[@id='header_42']"), "Demo Inquiry"));
Thread.sleep(2000);
driver.findElement(By.id("input_24")).clear();
driver.findElement(By.id("input_24")).sendKeys(name);
driver.findElement(By.id("input_16")).clear();
driver.findElement(By.id("input_16")).sendKeys(emailjoin);
driver.findElement(By.id("input_50")).clear();
driver.findElement(By.id("input_50")).sendKeys(count_of_payee);
driver.findElement(By.id("input_51_full")).clear();
driver.findElement(By.id("input_51_full")).sendKeys(phone_number);
driver.findElement(By.id("input_48")).click();
driver.switchTo().defaultContent();
//driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Thread.sleep(50000);

if(driver.getPageSource().contains("Thank you for your inquiry!"))
{
    System.out.println("PASS - Demo Inquiry");
    driver.close();
    driver.quit();
}
else
{
    System.out.println("FAIL - Demo Inquiry");

    driver.close();
    driver.quit();
}

【问题讨论】:

  • 请分享代码sn-p..
  • 你可以通过它的文本获取元素。
  • 至少与您分享 HTML,以便我们了解您想要获取的元素。
  • 嗨 Vikas 和 Sagar,请在下面找到代码 sn-p.Eg。 driver.findElement(By.xpath(".//*[@id='ctl00_ltaccordian']/a")).click();在这里,我们硬编码了通过检查从浏览器中获取的 xpath 元素。但它可能会在未来改变这个元素..所以我们会得到一个例外
  • 嗨 Mahesh,对于输入字段,我们没有正确的文本..

标签: java selenium xpath selenium-webdriver ui-automation


【解决方案1】:

您可以使用 XPath 代替 id,如下所示:

名称下方的文本字段:

driver.findElement(By.xpath("//label[contains(text(), 'Name')]/../*/input")).clear();
driver.findElement(By.xpath("//label[contains(text(), 'Name')]/../*/input")).sendKeys(name);

电子邮件下方的文本字段:

driver.findElement(By.xpath("//label[contains(text(), 'E-mail')]/../*/input")).clear();
driver.findElement(By.xpath("//label[contains(text(), 'E-mail')]/../*/input")).sendKeys(name);

收款人计数下方的文本字段:

driver.findElement(By.xpath("//label[contains(text(), 'Count of Payees')]/../*/input")).clear();
driver.findElement(By.xpath("//label[contains(text(), 'Count of Payees')]/../*/input")).sendKeys(name);

电话号码下方的文本字段:

driver.findElement(By.xpath("//label[contains(text(), 'Phone Number')]/../div/span/input")).clear();
driver.findElement(By.xpath("//label[contains(text(), 'Phone Number')]/../div/span/input")).sendKeys(name);

检查是否有帮助:)

【讨论】:

  • 谢谢。它对我有用。但我不知道你是如何形成这个定位器的?请帮帮我。
  • @Jaya 如果它对你有用,那么请接受并支持答案,支持它。要查找元素/定位器,请参阅:webperformance.com/load-testing-tools/blog/real-browser-manual/… 对于初学者来说,它是一个不错的博客,如果您想了解更多信息,也可以将聊天请求或 webex 或 Skype 发送给我。
  • 好的,谢谢马赫什。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
相关资源
最近更新 更多