我有DOM
<div class=" data-zone-data="{"/span>id"。 "97017425"}"data-zone-name="category-link"/span>>
< div class="_35SYu _1vnug" data-tid="acbe4a11 f8542ee1" >
< a href="/catalog--"。 kompiuternaia-tekhnika/54425" class="_3Lwc_"/span>>
<span class="_3z8Gf"/span>> Компьютеры</span>。
</a>/span>
</div>>
</div>
在此輸入代碼
構造器:
public YandexBeforeSearch(WebDriver driver, String search){
this.driver = driver;
this.driver.get("https://yandex.ru/search?text=" search);
}
我的方法:
public void clickToSite() {
LinkYandexMarket = driver.findElement(By. xpath("/a[@accesskey='1']")) 。
LinkYandexMarket.click()。
}
public void clickTYandexPC(){
LinkYandexPC = driver.findElement(By. xpath("/a[@href='/catalog--kompiuternaia-tekhnika/54425']")。
LinkYandexPC.click()。
}
我的測驗:
@Test
public void testOpen(){
YandexBeforeSearch yandexBeforeSearch = new YandexBeforeSearch(chromeDriver, "yandex market")。)
yandexBeforeSearch.clickToSite()。
yandexBeforeSearch.clickTYandexPC();
}
例外:
org.openqa.selenium.NoSuchElementException: no such element: 無法定位元素。{"method":"xpath","selector":"/a[@href='catalog--kompiuternaia-tekhnika/54425']"}。
我還使用了其他屬性。這個問題只發生在這個網站上。我無法跟蹤到類別的鏈接。
uj5u.com熱心網友回復:
當第一個鏈接/a[@accesskey='1']/code>被點擊時,一個新的視窗被打開。
我們需要切換到該新視窗點擊/a[@href='/catalog--kompiuternaia-tekhnika/54425']/code>
//點擊第一個鏈接。
driver.findElement(By.xpath("/a[@accesskey='1']"/span>).click()。
//獲得父視窗。
String parentwindow = driver.getWindowHandle();
//獲得所有的視窗句柄。
Set<String> windows = driver.getWindowHandles() 。
List<String> windows1 = new ArrayList<>(windows)。
///切換到新視窗點擊其他鏈接。
driver.switchTo().window(windows1.get(1) 。)
driver.findElement(By.xpath("/a[@href='/catalog--kompiuternaia-tekhnika/54425']"/span>).click()。
//切換回父視窗,如果需要的話。
driver.switchTo().window(parentwindow)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/327099.html
標籤:
上一篇:如何使用JSON/XML將資料傳遞給SeleniumWebDriver的表單
下一篇:重定向許多動態URL(301)
