我在硒中使用頁面工廠來識別元素。這裏我無法理解硒的怪異的行爲有個例子,這裏下拉元素不能被選中使用Selenium Java與PageFactory
dateOfBirth
passportExpiry
driverLicence--- are the WebElements defined using pageFactory
1. driverLicence.findElement(By.xpath("//div[@id='day-region']//div/span/a[text()='01']")).click();
2. passportExpiry.findElement(By.xpath("//div[@id='day-region']//div/span/a[text()='01']")).click();
3. dateOfBirth.findElement(By.xpath("//div[@id='day-region']//div/span/a[text()='01']")).click();
如果我們遵守上述3條線有一個類似的模式在剛剛webElement需要發送作爲參數。它看起來像下方,重複使用相同的每次
public void selectDay(WebElement we) { we.findElement(By.xpath("//div[@id='day-}region']//div/span/a[text()='01']")).c
lick();
}
selectDay(dateOfBirth);
selectDay(passportExpiry);
selectDay(driverLicence);
但它不工作,因爲這些我需要寫全的XPath完全像下面的代碼和它的作品 - 其怪異
1. driverLicence.findElement(By.xpath("**//div[@id='driver-licence']**//div[@id='day-region']//div/span/a[text()='01']")).click();
2. passportExpiry.findElement(By.xpath("**//div[@id='passport-licence']**//div[@id='day-region']//div/span/a[text()='01']")).click();
3. dateOfBirth.findElement(By.xpath("**//div[@id='date-of-birth']**//div[@id='day-region']//div/span/a[text()='01']")).click();
再次寫下每個步驟中以粗體提及的id屬性並使該步驟不可重用和垃圾是沒有意義的。
讓我知道如果有什麼辦法,我可以解決這個謎語或任何其他人都面臨着類似的問題上網絡Applciation工作用JavaScript
這是我在計算器的第一個問題,並深入到而當我從我的腦海,當我看到這種解決方案的工作,而不是
**webElement.FindElement(ChildElement).click**
感謝您的解決方案。直到現在我想知道爲什麼'。'總是放在xpath之前,現在我明白了。希望它有效 –