为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Java Selenium 单击 AngularJS 链接?

如何使用 Java Selenium 单击 AngularJS 链接?

侃侃无极 2023-05-17 15:38:34
我在 Java 中使用 Selenium WebDriver。我做了大部分事情,但我被困在某一点上,我有以下 HTML 代码:<a ng-href="#/studyenrollments/new" ng-show="canCreate" class="btn btn-primary edit-btn" href="#/studyenrollments/new">New Study Enrollment</a>我试过以下方法://new study enrollmentdriver.findElement(By.linkText("New Study Enrollment")).click();    driver.findElement(By.xpath("/html/body/div[2]/div[3]/a")).click();((JavascriptExecutor)driver).executeScript("document.querySelector(\"body > div.container.page.ng-scope > div.text-right.ng-scope > a\")");我希望点击“新研究注册”按钮并进入下一页以完成注册过程
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

检查元素是否在框架内如果是 - 然后 - 首先选择框架 -


Select Frame    name or id of iframe

然后执行以下操作 -


WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//a[@ng-show='canCreate']"))).click();

如果没有框架那么你可以直接与元素交互 -


WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//a[@ng-show='canCreate']"))).click();



查看完整回答
反对 回复 2023-05-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您需要添加显式等待条件,尤其是在处理包含 Angular JS 元素的页面时


 WebElement newStudyEnrollment= driver.findElement(By.xpath("//a[contains(text(),'New 

      Study Enrollment')]"));

    WebDriverWait wait = new WebDriverWait(driver, 10);

    wait.until(ExpectedConditions.elementToBeClickable(newStudyEnrollment));

    newStudyEnrollment.click();


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信