我试图用selenium来抓取一个网站,我主要使用xpath或CSS选择器来抓取元素。然而,我注意到这些是动态的(尽管我在网上读到CSS选择器不应该是动态的),我不得不经常重新编写代码。我对这一点还不太熟悉,我想帮助大家找出最好的方法。下面是一个元素的示例,它是我试图获取的一个输入框,我知道像ID这样的更确定的选择器更易于使用,但在这种情况下,我似乎找不到任何标识符。以下元素-
<dpm-input-number-bare><input size="1" type="text" placeholder="" class="ng-pristine ng-valid ng-touched"></dpm-input-number-bare>
这不管用-
driver.find_element_by_css_selector("ng-valid.ng-dirty.ng-touched")
这是更高的级别-它基本上是一个输入框,用于输入固定费率(框旁边的标签)
<div class="dpm-form-row"><dpm-input-number class="flex-6"><dpm-input-label><label>Fixed Rate</label></dpm-input-label><dpm-input-number-bare><input size="1" type="text" placeholder="" class="ng-pristine ng-valid ng-touched"></dpm-input-number-bare></dpm-input-number><div class="flex-6"></div></div>
可以使用以下XPath查找元素:
我们使用
label
元素作为锚定点。获取满足以下条件的input
元素:其parent
的第一个preceding-sibling
有一个label
子元素,该子元素包含术语“固定速率”如果需要,添加预期条件(元素可以接收单击)。假设您要在输入框中发送“12”:
进口:
编辑:其他XPath选项:
3使用
following-sibling
轴的XPath:3对
input
元素使用preceding-sibling
轴和多个contains
的XPath:4使用
preceding
轴的XPath:你试过这个吗
但是,如果同一XPath有多个元素,则可能会引发错误
使用元素的类查找元素怎么样
相关问题 更多 >
编程相关推荐