[英]Can't locate a button by any command in Java in Selenium Webdriver
我尝试了不同的命令,但没有一个有效。 我想找到并单击“Wykup składkę”按钮。 我正在开发: - Firefox 45.3.0 esr - selenium webdriver 2.53.0 - TestNG
这是html代码:
<div class="row">
<div class="col-md-6">
<section class="card skladki">
<h2> Składki </h2>
<div class="card-content">
<!--template bindings={}-->
</div>
<div class="button-container text-xs-center">
<a class="btn btn-sheer btn-card" href="#/feetable">Wykup składkę</a>
<!--template bindings={}--><a class="btn btn-sheer btn-card" href="#/fees-list">Lista składek</a>
</div>
</section>
</div>
还有我的测试脚本
package testy;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class wykup_skladek_olatest {
public WebDriver driver;
@BeforeMethod
public void beforeMethod() {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.navigate().to("http://dev.wedkarz.pzw.pl/#/login");}
@Test
public void f() throws InterruptedException {
driver.findElement(By.id("username")).sendKeys("****");
driver.findElement(By.id("password")).sendKeys("****");
driver.findElement(By.tagName("button")).click();
driver.navigate().to("http://dev.wedkarz.pzw.pl/#/login");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.partialLinkText("Wykup")).click();
}
@AfterMethod
public void afterMethod() throws InterruptedException {
driver.quit();
System.out.println("Wykupowanie składki - Test zakończony powodzeniem");
}}
您应该等待元素出现在屏幕上。 By.id("username")
出现在屏幕上需要一些时间,而您正试图在它出现之前访问它。
您可以使用以下代码:
WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));
编辑:点击<a class="btn btn-sheer btn-card" href="#/feetable">Wykup składkę</a>
你可以试试 :
driver.findElement(By.cssSelector("a.btn.btn-sheer.btn-card")).click();
尝试不同的选择器。 我不会是 css 选择器的粉丝。
尝试这个 -
然后使用驱动程序通过 xpath 查找元素。 对于此页面上的示例,例如添加评论按钮,这看起来像
driver.findElement(By.xpath("//*[@id='add-comment-39636086']/table/tbody/tr[1]/td[2]/input"));
使用您提供的按钮 xpath 进行编辑,这就是我编写它的方式:
WebElement element = driver.findElement(By.xpath("/html/body/app/main/dashboard/section/div/div[1]/div[1]/section/div[2]/a[1]"));
element.click();
我找到了解决我的问题的方法
driver.findElement(By.cssSelector("div.button-container [href='#/feetable']")).click();
但,
我想用这种方法定位并单击另一个按钮,但它不起作用。 这是什么黑魔法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.