我正在學習Selenium,想在amazon頁面選擇復選框。我去了亞馬遜網站并搜索了裙子。在左手邊顯示品牌,我想選擇Relipop復選框。我試了一下下面的代碼,但沒有成功
。driver.findElement(By.xpath("//*[@id='p_89/Relipop']/span/a/div/label/i)" ).click()。
請你幫助我,我感謝你的努力。
uj5u.com熱心網友回復:
試試這樣的xpath:
//li[@id='p_89/Relipop']/span/a/span[text()='Relipop']
uj5u.com熱心網友回復:
如果你注意這里
[@id='p_89/Relipop']
p_89看起來是動態的,它的意思是,它可能根據位置或甚至如果我們重繪 等而改變。
我看到提到的按鈕有這樣的HTML
< a data-routing=""/span> class="a- link-normal s-navigation-item" tab index="-1" href="/s? k=dresses&i=fashion&bbn=7141123011&;amp;rh=n:7141123011& amp;dc&qid=1632119503&rnid=2528832011&ref=sr_nr_p_89_1"/span>>/span>
<div class="a-checkbox a-checkbox-fancy s-navigation-checkbox aok-float-left" > <label> < input type="checkbox"/span> name="" value=" checked=""> <i class="a-icon a-icon-checkbox"/span>> </i> < span class="a-label a-checkbox-label"> < span></label></div>
< span class="a-size-base a-color-base a-text-bold" dir="auto" > Relipop</span>。
</a>/span>
基本上,我們在Selenium-Java系結中有4種點擊方式。
我將使用這個xpath
//span[text()='Relipop']/ancestor: :a
代碼試用1 :
Thread.sleep(5)。
driver.findElement(By.xpath("//span[text()='Relipop']/ancestor::a").click()。
代碼試用2 :
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Relipop']/ancestor::a")) .click()。
代碼試用3 :
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//span[text()='Relipop']/ancestor::a")。
((JavascriptExecutor)driver).executeScript("arguments[0].click();", button);
代碼試用4 :
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//span[text()='Relipop']/ancestor::a")。
new Actions(driver).moveToElement(button).click().build().perform()。
對于click上的check box,根據我的經驗,JS的作業絕對是完美的。
因此,請從code trial 3開始,如果這不起作用,請嘗試其他方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/327074.html
標籤:
上一篇:SeleniumPython。ElementNotInteractableException。物件沒有大小和位置
