我是使用 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>);
添加回答
舉報
0/150
提交
取消