gpt4 book ai didi

java - 使用不同的定位器定位 WebElement(NoSuchElementException)

转载 作者:行者123 更新时间:2023-12-01 19:07:04 24 4
gpt4 key购买 nike

我在定位 WebElement 时遇到问题使用不同的定位器。在下面的 html 标签中,我尝试找到“写评论”WebElement使用不同的定位器,如 linkText , xpath , classname但仍然得到 NoSuchElementException

--> url https://www.tripadvisor.in/ --> search for Club Mahindra --> click on Club Mahindra --> click on write a review .

    <a href="/UserReview-g641714-d1156207-Club_Mahindra_Madikeri_Coorg- 
Madikeri_Kodagu_Coorg_Karnataka.html" target="_blank" class="ui_button
primary">Write a review</a>

使用的定位器

  • By.xpath("//*[@id="component_12"]/div/div[2]/div/div[2]/div/div[1]/a")
  • By.xpath("//a[@href='/UserReview-g641714-d1156207-
    Club_Mahindra_Madikeri_Coorg-Madikeri_Kodagu_Coorg_Karnataka.html']")
  • By.className("ui_button primary")
  • By.linkText("Write a review")

我真的很困惑。我做错了什么?

最佳答案

我已经厌倦了分析和实现同样的事情。以下是我的发现:

-> 由于页面有大量动态加载,因此应用程序等待时间更长。

-> 需要实现适当的等待

-> 检查所有页面是否在同一个选项卡中打开,或者单击每个链接是否重定向到新选项卡,如果是这样,那么我们必须切换到该特定窗口。

-> 下面的代码对我来说就像专业人士一样。

    driver.get("https://www.tripadvisor.in/");
WebDriverWait wait = new WebDriverWait(driver, 120);
WebElement ele1 =
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[text()='Where to?']")));
ele1.click();

WebElement ele2= wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@placeholder='Where to?']")));
ele2.sendKeys("club mahindra, india");

WebElement ele3= wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(),'Search for ')]")));
ele3.click();
WebElement ele4= wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(),'Club Mahindra Madikeri, Coorg')]")));
ele4.click(); //this click leads to a new tab

Set<String> winHandles = driver.getWindowHandles();

for(String str : winHandles) {
driver.switchTo().window(str);
}
System.out.println(driver.getTitle());

WebElement ele;
int i=1;
while(true) {
try {
ele = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[text()='Write a review']")));
break;
}catch(Exception e) {
System.out.print(i++);
}
}
System.out.println();
Actions action = new Actions(driver);
action.moveToElement(ele);
ele.click();
System.out.println("Clicked on the 'Write a review button'");

关于java - 使用不同的定位器定位 WebElement(NoSuchElementException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com