如何通过Safari浏览器和selenium webdriver将文本发送到网页中的用户名和密码字段
我正在尝试登录到我应该为其编写测试脚本的网页。但在Safari中,登录脚本每次都会失败,尽管相同的脚本在Chrome上运行良好 显示错误消息:如何通过Safari浏览器和selenium webdriver将文本发送到网页中的用户名和密码字段,selenium,selenium-webdriver,webdriver,safaridriver,webdriverwait,Selenium,Selenium Webdriver,Webdriver,Safaridriver,Webdriverwait,我正在尝试登录到我应该为其编写测试脚本的网页。但在Safari中,登录脚本每次都会失败,尽管相同的脚本在Chrome上运行良好 显示错误消息: Sep 10, 2018 10:55:06 AM org.openqa.selenium.support.ui.ExpectedConditions findElement WARNING: WebDriverException thrown by findElement(By.id: mfacode) org.openqa.selenium.WebDr
Sep 10, 2018 10:55:06 AM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.id: mfacode)
org.openqa.selenium.WebDriverException: 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.14.0', revision: 'aacccce0', time: '2018-08-02T20:05:20.749Z'
System info: host: 'iMac.localdomain', ip: 'fe80:0:0:0:1c2b:a0b9:a043:3a94%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '1.8.0_181'
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: E2219A59-8EEE-4380-93B6-77A7DDE289BE
*** Element info: {Using=id, value=mfacode}
我正在使用的脚本:
公共类洛金萨法里酒店{
public static void main(String[] args) {
System.setProperty("webdriver.safari.driver", "/usr/bin/safaridriver");
WebDriver driver= new SafariDriver();
driver.get("https://yapiapp.io/welcome");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.className("auth0-lock-input"))).sendKeys("alaka.goswami@*****.com");
driver.findElement(By.name("password")).sendKeys("*******");
driver.findElement(By.className("auth0-lock-submit")).click();
// WebDriverWait wait=new WebDriverWait(driver, 40);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.id("******")));
// username and password masked//
是否有任何方法可以传递此消息或解决此问题?此错误消息
Sep 10, 2018 10:55:06 AM org.openqa.selenium.support.ui.ExpectedConditions findElement
WARNING: WebDriverException thrown by findElement(By.id: mfacode)
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
…意味着WebDriver实例无法根据您使用的找到任何元素
您需要注意以下几件事:
- 不同的浏览器渲染不同的对象,因此需要构造定位器策略才能跨浏览器工作
- 由于用户名/电子邮件和密码字段都在同一页上,因此您只需输入一次
- 由于需要调用
方法,因此需要使用sendKeys()
方法,而不是使用元素可伸缩性()
元素可伸缩性()等预期条件
- 您的有效代码块将是:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class yapiapp_login { public static void main(String[] args) { System.setProperty("webdriver.safari.driver", "/usr/bin/safaridriver"); WebDriver driver = new SafariDriver(); driver.manage().window().maximize(); driver.get("https://yapiapp.io/welcome"); new WebDriverWait(driver, 30).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.auth0-lock-input[name='username ']"))).sendKeys("alaka.goswami@*****.com"); driver.findElement(By.cssSelector("input.auth0-lock-input[name='password']")).sendKeys("Alakananda Goswami"); } }
- 浏览器快照(使用GeckoDriver/Firefox):