我用 cssselector 替换了定位器 tagName 而没有更改参数,并且代码仍然可以正常工作。之前的脚本是:
Driver.findElement(By.tagName("*enter tagName*");
替换代码为:
Driver.findElement(By.cssSelector("*enter tagName*");
尽管我没有使用任何 cssSelector 组合,但代码仍然有效。
这怎么可能?
我用 cssselector 替换了定位器 tagName 而没有更改参数,并且代码仍然可以正常工作。之前的脚本是:
Driver.findElement(By.tagName("*enter tagName*");
替换代码为:
Driver.findElement(By.cssSelector("*enter tagName*");
尽管我没有使用任何 cssSelector 组合,但代码仍然有效。
这怎么可能?
By.TAG_NAME
总是等价于By.CSS_SELECTOR
根据find_element()的定义:
elif by == By.TAG_NAME:
by = By.CSS_SELECTOR
因此上一行代码:
Driver.findElement(By.tagName("enter tagName");
和代码的替换行:
Driver.findElement(By.cssSelector("enter tagName");
是等效的。
这可以正常工作,因为标签名称本身就是一个正确的 CSS 选择器。
通常 CSS 选择器可能如下所示:tagName[attributeName='attributeValue']
您可以在其中省略属性名称和值,并仅根据其定位元素tagName
。所以tagName
孤独仍然是一个正确的 CSS 选择器。