シナリオ - www.homeshop18.comへの有効なログインとその後、デジタルメニューから「Samsung」を選択します。 結果が表示され、今度は、Micromaxをスクロールして選択する必要がある ブランドセクション(ページの左側に表示されている)から別のブランド、Micromaxを選択する必要があります。ランタイム中にセレンのxpathが変更される
問題:
もののマイクロマックスのxpathがある正しいです// * [@ ID = 'filter_1Option_12'] // [クラス@ = 'EZ-チェックボックス']しかし、私はの実行時に参照のdivスクリプト - micromaxではなく、他のブランドが選択されています。 よろしくお願いします。 www.homeshop18.comあなたは適切なチェックボックスを選択することがXPath
次使用する必要があります
public class HomeShop_Login_Test
{
@FindBy(xpath="//a[@id='signInHeaderLink']") WebElement SignIn_Link;
@FindBy(xpath=".//input[@id='emailId']") WebElement Email;
@FindBy(xpath=".//input[@id='existing_user_radio']") WebElement Existing_User_Radio;
@FindBy(xpath=".//input[@id='new_user_radio']") WebElement New_User_Radio;
@FindBy(xpath=".//input[@id='password']") WebElement Password;
@FindBy(xpath=".//a[@id='signin']") WebElement SignIn_Button;
@FindBy(xpath="//a[@title='Close']") WebElement Close_Home;
public void Login_Valid()
{
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement SignIn_Link = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@id='signInHeaderLink']")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click()", SignIn_Link);
Email.sendKeys("[email protected]");
boolean selected;
selected = New_User_Radio.isSelected();
if(selected)
{
Existing_User_Radio.click();
}
Password.sendKeys("xxx");
SignIn_Button.click();
}
//Class to choose Samsung from Digital menu
public class Browse_Samsung_Mobile
{
@FindBy(xpath="//*[@id='CategoryMenu1']//a[text()='Digital']") WebElement Digital_Menu;
@FindBy(xpath="//*[@id='CategoryMenu1']//a[@title='Samsung']") WebElement Samsung_SubMenu;
@FindBy(xpath="//*[@id='filter_1Option_19']//span[@class='selected_filter_img']") WebElement Micromax;
public void Browse_Samsung()
{
WebDriverWait wait = new WebDriverWait(driver, 30);
Actions act = new Actions(driver);
act.moveToElement(Digital_Menu).perform();
act.click(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='CategoryMenu1']//a[@title='Samsung']")))).build().perform();
//WebElement Micromax = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='filter_1Option_12']//span[@class='selected_filter_img']")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click()", Micromax);
}
}
//class to call above two classes
public class Validate_Browse_Samsung_Mobile
{
WebDriver driver;
@Test
public void Validate_Browse()
{
driver = BrowserFactory.getBrowser("Firefox");
driver.get(DataProviderFactory.getConfig().getURL());
HomeShop_Login_Test login = PageFactory.initElements(driver, HomeShop_Login_Test.class);
login.Login_Valid();
Browse_Samsung_Mobile browse = PageFactory.initElements(driver, Browse_Samsung_Mobile.class);
browse.Browse_Samsung();
}
}
ありがとう、それは働いた! 私のスクリプトは「micromax」を正しくクリックできますが、クリックが見えません。方法はありますか、私は私の見ることができるスクリプトのスクロールもできますか? 現在、私はこのスクリプトを使用していますが、これはクリックを見せていません。 JavascriptExecutor js =(JavascriptExecutor)ドライバ。 js.executeScript( "arguments [0] .click()"、Micromax); – Bimlesh
はい、最初にスクロールして '((JavascriptExexutor)ドライバー).exexuteScript(" arguments [0] .scrollIntoView() "、micromax); micromax.click(); '... –
試しましたが運がありません。親切にチェックしてください。 WebElement Micromax = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath( "// * [@ id = 'filter_1Option_21'] // [[GSM携帯電話 - Micromax]]))); \t \t \t \t JavascriptExecutor js =(JavascriptExecutor)driver; \t \t js.executeScript( "arguments [0] .scrollIntoView"、Micromax); \t \t Micromax.click(); エラー。 org.openqa.selenium.ElementNotVisibleException:要素が現在表示されていないため、相互作用しない可能性があります コマンドの継続時間またはタイムアウト:20.15秒 – Bimlesh