当前位置: 首页 > 知识库问答 >
问题:

Selenium无法定位元素

黄沈浪
2023-03-14

我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。

我试过:

 driver.findElement(By.id("originTextField"))

或者通过xPath和cssSseltor String在dev工具中由chrome生成。

请帮助我,我将感谢解释。

这是html:

共有3个答案

郁高韵
2023-03-14

下面的代码将帮助您解决此问题

wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("originTextField")));

wait = new WebDriverWait(driver, 90);
wait.until(ExpectedConditions.visibilityOf(element)).wait(20);
戚成礼
2023-03-14

您的代码是正确的,我怀疑这个问题是在您找到元素时导致页面未完成加载的原因。

尝试在查找元素之前添加长时间睡眠,如果添加睡眠有效,请将睡眠更改为等待。

这是代码,表示如果元素不存在,则等待10秒:

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "originTextField"))
)
燕意蕴
2023-03-14

组织。openqa。硒。NoSuchElementException通常被称为NoSuchElementException。openqa。硒。NotFoundException是WebDriverException的一种类型。

在以下两种情况下可以抛出NoTouchElementException:

>

//example : WebElement my_element = driver.findElement(By.xpath("//my_xpath"));

使用WebElement.findElement(By)时:

//example : WebElement my_element = element.findElement(By.xpath("//my_xpath"));

根据JavaDocs,与其他WebDriverException一样,NoTouchElementException应该包含以下常量字段:

Constant Field      Type                                        Value
SESSION_ID          public static final java.lang.String        "Session ID"
e.g. (Session info: chrome=63.0.3239.108)

DRIVER_INFO         public static final java.lang.String        "Driver info"
e.g. (Driver info: chromedriver=2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1),platform=Windows NT 6.1.7601 SP1 x86)

BASE_SUPPORT_URL    protected static final java.lang.String     "http://seleniumhq.org/exceptions/"
e.g. (For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html)

NoTouchElementException的原因可能是以下任一原因:

  • 您采用的定位器策略不会标识HTMLDOM中的任何元素

解决NoTouchElementException的解决方案可以是以下任一种:

>

在这里,您将看到有关如何检查硒M3中元素的详细讨论。6因为firebug不再是FF 56的选项?

使用执行脚本()方法将元素滚动到视图中,如下所示:

WebElement elem = driver.findElement(By.xpath("element_xpath"));
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", elem);

在这里,您将看到关于使用Selenium在Python中滚动到页面顶部的详细讨论

Incase元素具有属性style=“display:none;”,通过executeScript()方法删除属性,如下所示:

WebElement element = driver.findElement(By.xpath("element_xpath"));
((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", element)
element.sendKeys("text_to_send");

检查元素是否在

driver.switchTo().frame("frame_name");
driver.switchTo().frame("frame_id");
driver.switchTo().frame(1); // 1 represents frame index

在这里,您可以找到关于是否可以在不使用驱动程序的情况下切换到帧中的元素的详细讨论。切换到()。Selenium Webdriver Java?中的框架(“框架名”)?。

如果该元素在超文本标记语言DOM中不存在/不可见,请将具有预期条件的WebDriver等待设置为正确的方法,如下所示:

>

  • 要等待元素的出现,请执行以下操作:

    new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@class='buttonStyle']//input[@id='originTextField']")));
    

    要等待找到的元素的可见性,请执行以下操作:

    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='buttonStyle']//input[@id='originTextField']")));
    

    要等待元素可选择,请执行以下操作:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='buttonStyle']//input[@id='originTextField']")));
    

    您可以在以下网站找到Selenium基于python客户端的相关讨论:

    • 当使用Chrome时,Selenium“Selenium.common.exceptions.NoSuchElementException”

  •  类似资料:
    • 问题内容: 我正在尝试搜寻房地产网站上的商品。它有一个aspx表单,必须在提交之前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for- Sale.aspx 我只关心俄勒冈州的多户家庭财产。所以这是我的第一次尝试: 当我运行此脚本时,出现错误“找不到元素“ ForSalePropertyType”。在这里我在做什么错? 问题答案:

    • 我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。

    • 我有一个粘性导航栏,它有几个列表元素,每个元素都包含href元素。当我试图定位元素时,我得到了错误。以下是我的HTML代码: 我想通过Webdriver定位Academic,我遇到这样的错误无法定位元素。

    • 你知道为什么吗?

    • 我正在尝试采取一些分数从网站,而使用WebDriver。到目前为止我尝试了XPath,CSS,Classname,但是,有时它定位项目,有时它不定位。 这是我一直试图带它的HTML代码: 这是我的代码(到目前为止我已经尝试过了): 其他版本: 并且我也尝试了子类(在score classes下),但结果是一样的,有时可以定位元素,有时不能。 有什么建议吗? 更新:在我的代码中,我放了一些或仍然不能

    • 我对selenium WebDriver非常陌生,我试图自动化一个页面,它有一个名为“删除日志文件”的按钮。使用FireBug我了解到,HTML被描述为 css选择器也使用firepath定义为“#DeletelogButton” 请帮助我解决这个问题。