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

步骤定义 Java - Selenium WebDriver 从搜索结果中查找元素

步骤定义 Java - Selenium WebDriver 从搜索结果中查找元素

HUWWW 2021-10-28 14:29:39
我是使用 Java 的 Selenium Webdriver 自动化的新手,并且仍在学习。在我的步骤定义 RetailTakePayment.java 类中,我试图找到包含特定文本出现在搜索结果中(在弹出窗口中)的元素,但由于某种原因,我无法找到并单击它。我四处寻找,但不是很幸运。因此,发布我的问题以获得一些指导。我希望这些有帮助。Salesforce 页面车辆查找:弹出 - 查找搜索结果:我的 HTML:我的 HTML 中的两个框架:我的步骤定义:@Given("^user complete payment precheck$")    public void user_complete_payment_precheck() throws Throwable {        // inserting installer and preferred date        driver.findElement(By.id("page:frm:main:jobsInfo:jobsRepeat2:0:j_id164")).sendKeys("Test");        driver.findElement(By.xpath("/html/body/div[1]/div[2]/table/tbody/tr/td[2]/form/div[1]/div/div/div/div[2]/div[5]/div[2]/table/tbody/tr[1]/td/table/tbody/tr/td[4]/span/span")).click();        // searching and selecting vehicle        // click on lookup        driver.findElement(By.xpath("//img[@alt='Vehicle Lookup (New Window)']")).click();        Thread.sleep(2000);        // window switch handler            String parentWindowHandler = driver.getWindowHandle();        String subWindowHandler = null;                Set<String> handles = driver.getWindowHandles();                Iterator<String> iterator = handles.iterator();                while (iterator.hasNext()) {                    subWindowHandler = iterator.next();                }                driver.switchTo().window(subWindowHandler);        // switch by frame        driver.switchTo().frame(0);        // searching - this worked!!!        driver.findElement(By.xpath("//form[@id='theForm']/div/div[2]/input")).sendKeys("autod2018");        Thread.sleep(1000);        driver.findElement(By.name("go")).click();        Thread.sleep(2000);    }
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

由于搜索表单和结果表在不同的框架中,所以在与其中的元素进行交互之前,您需要切换到相应的框架。


 // switch to search form frame

 driver.switchTo().frame(0);


 // enter search keywords and click go

 ...


 // switch back to topmost frame in the current window.

 // this is very important, you can't directly switch to result table frame

 // from search form frame ( because it's not includes the result table frame).

 // Most of time, we back to the top frame, then jump into other frame.

 driver.switchTo().defaultContent();


 // then switch to result table frame

 driver.switchTo().frame(<index_or_name_of_result_table_frame>);


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

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