org.openqa.selenium.NoSuchElementException:没有这样的元素:在尝试使用Java通过selenium登录时无法找到元素
我已经尽力用Selenium为以下站点编写了一个登录脚本。这是我的密码:org.openqa.selenium.NoSuchElementException:没有这样的元素:在尝试使用Java通过selenium登录时无法找到元素,java,selenium-webdriver,Java,Selenium Webdriver,我已经尽力用Selenium为以下站点编写了一个登录脚本。这是我的密码: public class TopMba { String driverPath = "/usr/bin/chromedriver"; WebDriver driver; String username = "test@gmail.com"; // Change to your username and passwrod String password = "12345"; // Th
public class TopMba {
String driverPath = "/usr/bin/chromedriver";
WebDriver driver;
String username = "test@gmail.com"; // Change to your username and passwrod
String password = "12345";
// This method is to navigate topmba URL
@BeforeClass
public void init() {
System.setProperty("webdriver.chrome.driver", driverPath);
driver = new ChromeDriver();
driver.navigate().to("https://www.topmba.com");
}
// To log in topmba
@Test
public void login() {
driver.findElement(By.className("tm-user")).click();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.switchTo().frame(driver.findElement(By.xpath("//*[@id=\"tm-modal-frame-nvtfa7vvbm\"]")));
driver.findElement(By.id("edit-user")).sendKeys(username);
driver.findElement(By.id("edit-pass")).sendKeys(password);
driver.findElement(By.id("edit-submit")).click();
driver.switchTo().defaultContent();}
@AfterClass
public void quit() {
driver.close();
}
例外情况如下:
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id=“tm-modal-frame-nvtfa7vvbm”]”
使用以下代码:
driver.get("https://www.topmba.com");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
String parentWindowHandle = driver.getWindowHandle();
driver.findElement(By.className("tm-user")).click();
WebElement iframe = driver.findElement(By.xpath("//iframe[contains(@src,'app/sso/user/login')]"));
driver.switchTo().frame(iframe);
driver.findElement(By.id("edit-name")).sendKeys(username);
driver.findElement(By.id("edit-pass")).sendKeys(password);
driver.findElement(By.id("edit-submit")).click();
driver.switchTo().window(parentWindowHandle);
您需要注意以下几点:
- 要单击工具提示为“登录”的图标,请执行以下操作:
driver.findElement(By.className("tm-user")).click();
如果您查看HTML,此定位器策略唯一地标识元素,但要进行更集中的单击,您需要将
标记作为目标,该标记位于中,这不是“gimme codez”组。Selenium是一个测试工具,不是一个登录工具,btwI投票结束这个问题,因为他要求我们做他的工作。请显示您迄今为止尝试过的任何代码。我已经尽了最大努力编写了一个登录脚本,先显示给我们?您可以检查元素并检查。看看为什么对其他读者没有帮助,并且容易被否决。
System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.topmba.com"); new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("li.tm-user>a.tmba-user>span.fa-img-icons.fa-img-user"))).click(); new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@src='/app/sso/user/login']"))); new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.input-block-level.form-text.required.form-control#edit-name"))).sendKeys("khawar"); driver.findElement(By.cssSelector("input.input-block-level.form-text.required.form-control#edit-pass")).sendKeys("khawar"); driver.findElement(By.cssSelector("button.btn.btn-warning.btn-block.button.js-form-submit.form-submit#edit-submit")).click();