Action 类在 selenium webdriver 中以调试模式工作

问题描述 投票:0回答:6

我已经编写了代码,当我在调试模式下运行时效果很好,但是当我在正常模式下运行它时,我收到以下异常

     org.openqa.selenium.NoSuchElementException: no such element: 
     Unable to locate element: {"method":"xpath","selector":".//*[@id='address-0']/span"}

我写的代码是:

    WebElement searchBox  = driver.findElement(By.id("search-input"));
    searchBox.sendKeys("somepostcode");
    Actions actions = new Actions(driver);
    actions.moveToElement(searchBox);
    WebElement address = driver.findElement(By.xpath(".//*[@id='address-0']/span"));
    actions.moveToElement(address);
    actions.click();
    actions.perform();

我不明白我应该在哪里等待。

我正在使用 Eclipse IDE。该功能的工作原理就像当我在搜索框中输入一些邮政编码时,它会在运行时搜索一些地址,并且用户必须选择与邮政编码相关的任何地址。已使用 Ajax 获取邮政编码

这里的搜索框是一个文本框。

如果需要更多信息,请告诉我。

java selenium-webdriver automated-tests
6个回答
1
投票

尝试在之前增加一些等待时间

WebElement address = driver.findElement(By.xpath(".//*[@id='address-0']/span"));


1
投票

错误告诉您,您正在尝试在页面上可见之前创建 WebElement“地址”的实例。 尝试在之前添加等待

WebElement address = driver.findElement(By.xpath(".//*[@id='address-0']/span"));


1
投票

在这种情况下,当脚本在调试模式下工作但在正常模式下失败时,这几乎总是时序问题。因此,当您尝试查找该元素时,您的页面尚未完全加载。

在有问题的元素之前放置显式等待。使用显式等待通常不是最佳实践,但您可以快速尝试一下,看看是否能解决您的问题。如果是这样,您可以稍后将其重构为更可靠的解决方案。

WebElement myDynamicElement = (new WebDriverWait(driver, 10))

1
投票

希望这会帮助你..

    WebElement searchBox  = driver.findElement(By.id("search-input"));

    searchBox.sendKeys("somepostcode");

    Actions actions = new Actions(driver);

    actions.moveToElement(searchBox);

    WebDriverWait wait = new WebDriverWait(driver, 20);

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='address-0']/span")));

    WebElement address = driver.findElement(By.xpath(".//*[@id='address-0']/span"));

    actions.moveToElement(address);

    actions.click();

    actions.perform();

0
投票

我通过将邮政编码分成两部分解决了这个问题

searchBox.sendKeys("postcodePart1");
searchBox.sendKeys("postcodePart2");

一定有某种 on Change 事件正在调用。


0
投票

不要使用Actionchains,而是直接使用driver.find_element(By.XPATH, "xxxxxx").send_keys( “xxxxx”) 有时在运行模式下,它将焦点移出字段,导致其无法输入文本。

© www.soinside.com 2019 - 2024. All rights reserved.