java - 无法在 MacBook Pro 上的 Safari 浏览器中单击下拉菜单
问题描述
我是自动化新手,试图在 Safari 浏览器中单击我的应用程序中的下拉菜单,但脚本失败并出现错误。请帮忙。
错误 :
An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DHRODCLPC0316', ip: '2409:4042:2098:9614:d857:22cd:8ec8:8ceb%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '13.0.2'
Driver info: org.openqa.selenium.safari.SafariDriver
Capabilities {applicationCacheEnabled: true, browserName: safari, cleanSession: true, cssSelectorsEnabled: true, databaseEnabled: true, handlesAlerts: true, javascriptEnabled: true, locationContextEnabled: false, nativeEvents: true, platform: MAC, platformName: MAC, rotatable: false, version: 13605.3.8, webStorageEnabled: true}
Session ID: C7B2C752-80D4-4453-B0C7-C35151B11F3C
配置 :
- Safari 版本 13
- Macbook Pro 机器
代码流
- 打开网址https://shop-lbs.mediatis.de
- 使用凭据登录
- 点击快速下单
- 输入一些代码以添加到购物车
- 验证价格和结帐
- 现在从下拉列表中选择送货地址
脚本 :
package lbs.leica;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.safari.SafariDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class Testcase_240_UAT_SAFARI extends ExtentReport_UAT
{
WebDriver driver;
public static String cardNumber = "4111-1111-1111-1111";
public static String Expiry = "01/29";
@BeforeTest
public void initialization()
{
test = extent.createTest("Order tests in UAT plethora of different order tests to verify tax, shipping, customer pricing, list pricing");
driver = new SafariDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.navigate().to("https://shop-lbs.mediatis.de");
System.out.println(driver.getTitle());
reportLog(driver.getTitle());
}
@Test
public void VerifyPrices() throws IOException, InterruptedException
{
driver.findElement(By.xpath("//*[@id='login-menu_login_title']")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("(//*[@id='ShopLoginForm_Login'])[2]")).clear();
driver.findElement(By.xpath("(//*[@id='ShopLoginForm_Login'])[2]")).sendKeys("fjsim@buffalo.edu");
Thread.sleep(2000);
driver.findElement(By.xpath("(//*[@id='ShopLoginForm_Password'])[2]")).sendKeys("!InterShop00!");
reportLog("Entered username and password");
// Click on login in button
driver.findElement(By.xpath("(//*[@class='account-sign-in btn btn-primary'])[2]")).click();
Thread.sleep(5000);
reportLog("Clicked on Login ");
driver.findElement(By.xpath("//*[@class='view-account']")).click();
Thread.sleep(5000);
// Click on Quick Order
driver.findElement(By.xpath("//*[@class='quickorder-li hidden-xs']")).click();
Thread.sleep(5000);
reportLog("Clicked on Quick Order ");
// Click on Copy and paste
driver.findElement(By.xpath("(//*[text()='Copy and paste'])[1]")).click();
Thread.sleep(4000);
reportLog("Clicked on Copy and paste ");
//Enter Codes in text box
String[] voucherCodes = {"DS9800 1", "PA0515 2", "AR0222 3", "PA0027 4", "PA0571 5", "PA0813 6", "3801800 1", "3803650 1", "3800680 1", "3801815 1", "3800675 1", "3800080 1", "3800050CL 1", "3800161 1"};
WebElement input = driver.findElement(By.id("addToCartCopyAndPaste_textArea"));
for (String voucher : voucherCodes)
{
input.sendKeys(voucher+"\n");
}
reportLog("Entered Codes ");
//Click on Add to cart
driver.findElement(By.id("addToCartCopyAndPaste")).click();
Thread.sleep(9000);
reportLog("Clicked on Add to cart ");
//Verify and Print price
List<WebElement> VerifyPrice = driver.findElements(By.xpath("//*[@class=' col-xs-4 col-sm-offset-1 col-sm-2 list-item column-price single-price']"));
for(WebElement price:VerifyPrice)
{
System.out.println(price.getText());
reportLog(price.getText());
}
System.out.println();
//Verify and Print Product
List<WebElement> VerifyProduct = driver.findElements(By.xpath("//*[@class='product-title']"));
for(WebElement product:VerifyProduct)
{
System.out.println(product.getText());
reportLog(product.getText());
}
System.out.println();
Thread.sleep(4000);
//Click Checkout on shopping cart page
driver.findElement(By.xpath("//*[@class='btn btn-block btn-primary']")).click();
Thread.sleep(4000);
reportLog("Clicked Checkout on shopping cart page ");
//Select shipping address
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.scrollTo(0, 200)");
Thread.sleep(5000);
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//*[@class='btn dropdown-toggle btn-default'])[2]")));
System.out.println("Address dropdown visible");
WebElement e1 = driver.findElement(By.xpath("(//*[@class='btn dropdown-toggle btn-default'])[2]"));
e1.click();
Thread.sleep(5000);
System.out.println("Address dropdown Clicked");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//*[@class='dropdown-menu inner'])[2]/li[1]")));
System.out.println(" dropdown visible");
driver.findElement(By.xpath("(//*[@class='dropdown-menu inner'])[2]/li[1]")).click();
Thread.sleep(2000);
System.out.println(" dropdown clicked");
reportLog("Selected first address ");
解决方案
“处理命令时发生未知的服务器端错误。”
这可能表明 safaridriver 中存在错误。要更轻松地查看发生了什么,请尝试将 'safari:diagnose' 功能传递给新会话。这将导致 safaridriver 将协议流量记录到 ~/Library/Logs/com.apple.WebDriver//。man safaridriver
有关启用诊断的更多信息,请参阅。
如果协议跟踪显示命令意外失败(例如 HTTP 500),请在https://feedbackassistant.apple.com/提交问题,以便 Apple 进行调查。包括一个简化的独立测试用例对于解决问题非常有帮助,所以请这样做!
谢谢!
推荐阅读
- java - Spring-Boot:如何限制 Bean 的可见性
- parallel-processing - 并行减少算法的时间复杂度
- schema - 如何规范递归关系?(概念到逻辑)
- docker - Docker compose-Mount 卷在几个容器和主机上
- django - 触发以检测 firebase 的变化
- javascript - bootbox 确认:按 Enter 键时未提交表单
- c# - 没有更改参数上下文的复杂表达式树
- json - 播放 Framweok + Mongo Scala 驱动程序 + LocalDate
- c# - 在 WPF 应用程序中封装动态鼠标 UI 元素
- cookies - ASP.NET Core Razor Pages Cookie Authentication 登录成功后重定向到登录页面