【问题标题】:Need to enter text through automation in a rich text editor?需要在富文本编辑器中通过自动化输入文本?
【发布时间】:2014-09-19 06:46:56
【问题描述】:

我正在自动化网页。一个对象没有任何唯一标识。我应该用什么作为它的唯一标识符,你们能给我一些建议吗?这是一个富文本编辑器。我将如何在其中输入我的文本?

当我使用 id (ctl00_m_HelpDeskRequestRightColumn_ctl00_txtDetails) 作为其标识符时,它会抛出一个异常 The expected element "<my object's name>" is not visible

<body class="ms-formbody" scroll="yes" style="border-top-width: medium;
    border-right-width: medium; border-bottom-width: medium;
    border-left-width: medium; border-top-style: none; border-right-style:
    none; border-bottom-style: none; border-left-style: none;
    background-color: white;" contentEditable="true" WebLocale="1033"
    BaseElementID="ctl00_m_HelpDeskRequestRightColumn_ctl00_txtDetails"
    wordWrap="false" ondragdrop="function anonymous() { RTE_OnDrop(this); }"
    RestrictedMode="true" AllowHyperlink="true" >

这是该对象的检查元素描述。

[我正在使用 eclipse 在 java 中编写我的 selenium webdriver 脚本。]

【问题讨论】:

  • 能否提供您所定位元素的 HTML sn-p?
  • 已编辑。第一次没有显示
  • 您是否尝试使用 Xpath 或 CSS 来识别它?
  • 请帮助我,它对应的 xpath 或 cssSelector 是什么?

标签: java html eclipse selenium-webdriver uniqueidentifier


【解决方案1】:

试试这个 XPath..

".//body[@BaseElementID='ctl00_m_HelpDeskRequestRightColumn_ctl00_txtDetails']"

【讨论】:

  • 还有什么可以帮助的吗?
  • 运行此 xpath 时元素是否可见?
  • 当前down元素的BaseElementID是多少?
  • BaseElementID 是动态的吗?
  • 当前向下元素,如?
【解决方案2】:

Id(s) 是迄今为止我了解到的最安全的使用方法。但从你的问题我可以假设你的页面可能有一些重复的 id。请尝试以下操作,看看是否有效。用 C# 编写。

//this should find a collection of all elements having same ids     

var elements =Driver.FindElements(By.Id("ctl00_m_HelpDeskRequestRightColumn_ctl00_txtDetails"))

//looping through, find the element that is displayed and then send keys and break the loop
foreach (var element in elements )
{
    if (element.Displayed())
    {
        element.SendKeys("something");
        break;
    }
}

【讨论】:

  • 做了同样的事情,但它仍然告诉我“”元素未找到:(
  • 现在它告诉我它已经输入了文本,但实际上并没有,因为输入的文本不可见。因此,在单击提交按钮后,它会在此编辑器框上显示一个错误,表明它是必填字段,需要填写。所以我不知道该文本是在哪里输入的
  • 好的,我假设它需要更多调试。我假设您无法找到正确的元素。这样做: A. 使用:Driver.FindElements(By.Xpath("Your Xpath")).Count;如果它返回多个元素,请尝试使用 B. selenium IDE 并查看它使用的选择器,至少它会给你一些想法。
  • 似乎没有任何效果,因为 IE 驱动程序/Webdriver 似乎无法识别此编辑器。因为它是一个表格,所以我使用以前的标签并发送标签,然后用数字填写该框。这是目前唯一可行的选择,截止日期就在我的脖子附近。
  • 您是否尝试过 driver.switchto().frame("id") 将焦点设置在框架上?我猜你的问题就在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多