【问题标题】:how to interact with span in selenium java without class or id?如何在没有类或 id 的 selenium java 中与 span 交互?
【发布时间】:2021-12-21 08:24:22
【问题描述】:

Html 代码 Span 是一个按钮 X,位于图像的右上角

第 1 页
<img src="img.jpg" class="class2">

<span>                                                  how to interact with span
   <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
   <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 "></path></svg>
</span>                                                   how to interact with span

【问题讨论】:

  • 如果你没有任何类或 id 来确定你想与哪个跨度交互,我看到的唯一方法就是它在文档中的位置(例如,在 img 之后的第一个跨度类“class2”,文档中的第 n 个跨度等)。但是,对文档的结构更改可能会破坏测试。
  • 如果这两个短语如何与 span 交互,如果它们最初不是 HTML 的一部分,你能否删除它们?

标签: java selenium selenium-webdriver testing automation


【解决方案1】:

您要查找的元素位于 &lt;svg&gt; 标记内,因此常规定位器将不起作用。你需要像下面这样尝试,

//*[name()='svg' and @stroke='currentColor']

//span//*[name()='svg' and @stroke='currentColor']

//*[name()='svg' and @stroke='currentColor']//*[name()='path']

【讨论】:

    【解决方案2】:

    如果跨度包含一些独特的东西,请选择包含它的跨度。例如 svg:

    "//span[./svg[@viewBox='0 0 512 512']]"
    

    或者,如果您的整个代码被一个 div 包围,如下所示。获取具有正确图像的 div,然后在 div 内获取跨度:

    <div>
        <img src="img.jpg" class="class2">
        <span>
             ....
        </span>
    </div>
    
    "//div[./img[src='img.jpg']]/span"
    

    另见finding child elements

    【讨论】:

    • 你是 100% 正确的。但是如果图像名称是动态的,那么呢?
    • @Saikumar 好吧,在页面上找到任何独特的东西并从那里构建。也许图像位于表格结构中,您可以在其中识别单元格。或者,如果您想全部获取它们,请使用 findElements。如果你只是想要第二个“(//div[./img]]/span)[1]”
    猜你喜欢
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 2020-02-01
    • 2020-07-31
    • 2021-06-13
    • 1970-01-01
    • 2019-07-15
    • 2022-01-07
    相关资源
    最近更新 更多