dom中有一个rect对象:

<rect class="slv-blank" id="id123" height="8.8" stroke-width="1px" width="18.8" x="59.2" y="37.5"></rect> 

我正在尝试使用以下代码搜索它:

WebDriverWait(driver, 1).until(ec.presence_of_element_located(("xpath", '//rect[@id="id123"]'))).click() 

这不起作用。

但以下情况确实如此:

WebDriverWait(driver, 1).until(ec.presence_of_element_located(("xpath", '//*[name()="rect"][@id="id123"]'))).click() 

有什么线索可以解释为什么第一个不起作用吗?

请您参考如下方法:

<rect>

<rect> 元素是基本的SVG创建矩形的形状,由矩形的角位置、宽度和高度定义。矩形的角可以是圆角的。

示例:

<svg viewBox="0 0 220 100" xmlns="http://www.w3.org/2000/svg"> 
  <!-- Simple rect element --> 
  <rect x="0" y="0" width="100" height="100" /> 
 
  <!-- Rounded corner rect element --> 
  <rect x="120" y="0" width="100" height="100" rx="15" ry="15" /> 
</svg> 
<小时 />

属性

attributes<rect>要素如下:

  • x :该属性决定矩形的x坐标。
    • 值类型:| ;默认值:0;可动画:是
  • y :该属性决定矩形的 y 坐标。
    • 值类型:| ;默认值:0;可动画:是
  • width :该属性决定矩形的宽度。
    • 值类型:自动|| ;默认值:自动;可动画:是
  • height :该属性决定矩形的高度。
    • 值类型:自动|| ;默认值:自动;可动画:是
  • rx :该属性决定矩形的水平角半径。
    • 值类型:自动|| ;默认值:自动;可动画:是
  • ry :该属性决定矩形的垂直角半径。
    • 值类型:自动|| ;默认值:自动;可动画:是
  • pathLength :此属性可以指定路径的总长度(以用户单位为单位)。
    • 值类型:;默认值:无;可动画:是

Note: Starting with SVG2 x, y, width, height, rx and ry are Geometry Properties, meaning those attributes can also be used as CSS properties for that element.

<小时 />

这个用例

作为<rect>元素是一个 SVG 元素,因此要找到此类元素,您必须显式指定 SVG namespace使用 访问元素时如下:

  • 对于 <svg>元素:

    //*[name()="svg"] 
    
  • 对于 <g>元素:

    //*[name()="svg"]/*[name()="g"] 
    
  • 对于 <rect>元素:

    //*[name()="svg"]/*[name()="g"]/*[name()="rect"] 
    //*[name()="svg"]/*[name()="rect"] 
    
<小时 />

引用文献

您可以在

中找到一些相关的详细讨论


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!