我在采访中遇到了以下问题:如何识别没有唯一标识符的网络元素,甚至没有div或select或任何东西。我无法理解这个问题本身。谁能在这帮助我?
答案 0 :(得分:2)
面试问题总是一个挑战,通常是试图通过受访者的反应(正面或负面),这通常与问题的主题无关,这样他们就可以了解你的问题。理解或个性。
根据采访者的不同,他们可能一直在寻找你是否在编程方面做得很好。我不知道你申请的职位。假设Selenium没有任何“魔法”方法来查找所述元素,那么面试官可能想知道你是否可以编写,或者理解以编程方式解析网页代码。
也许他们正在寻找您以编程方式量化元素,以便根据参数搜索找到它。
这两个概念都会向面试官展示对编程基础的理解,而不会谈论具体的代码。
答案 1 :(得分:2)
嗯,有很多不同的技术可以在HTML中找到元素。它过于宽泛而无法准确回答,因此,如果我是你,我会列出可能的技术,并提供多个示例。 XPath表达式和CSS选择器可以解决问题。
标记名称,id
,name
,class
或任何其他与数据相关的属性通常是定位元素的良好可靠选择。如果这些都不存在,那将取决于元素的位置,父母,兄弟姐妹,祖先等所具有的内容以及元素文本,相应标签(如果有的话),父母的独特性 - 实际上有太多变量。
例如,假设您有以下HTML:
<span>
<label>Category:</label>
<b>Desired text</b>
</span>
此处所需的b
标记本身没有id
或name
,但很容易看出我们可能依赖其前一个兄弟< / em>并使用此XPath表达式:
//label[. = "Category:"]/following-sibling::*
有时我们知道所需元素位于元素中的特定位置。例如:
<tr>
<td>text1</td>
<td>Desired text</td>
<td>text3</td>
</tr>
在这种情况下,我们只需从td
获取第二个tr
:
//tr/td[2]
有时,&#34; text&#34;元素:
<div>The quick brown fox jumps over the lazy dog</div>
让我们知道&#34; fox&#34;在那里:
//div[contains(., "fox")]
等等。