无法使用“Contains”关键字访问元素(Selenium,Python)

无法使用“Contains”关键字访问元素(Selenium,Python),python,selenium,xpath,selenium-webdriver,automation,Python,Selenium,Xpath,Selenium Webdriver,Automation,我试图使用contains关键字访问以下元素,但每次都失败: <div class="country_item " data-region="4"> <label class="chk-label-active" for="country_255">Bulgaria</label> <div class="jcf-class-save-checkbox chk-area chk-checked"> <span/> </div>

我试图使用contains关键字访问以下元素,但每次都失败:

<div class="country_item " data-region="4">
<label class="chk-label-active" for="country_255">Bulgaria</label>
<div class="jcf-class-save-checkbox chk-area chk-checked">
<span/>
</div>
<input id="country_255" class="save-checkbox jcf-hidden" data-allowlist="378,438,183" name="jform[country][]" value="255" data-currency="2" data-bond_count="19" checked="checked" type="checkbox"/>
</div>
这是一个国家列表,保加利亚在div[15]

有人能帮我找出问题所在吗

 //*[contains(text(), 'Bulgaria')])
为了打破这一局面

*是一个与任何元素(如标记)匹配的选择器-它返回一个节点集。 []是对该节点集中的每个单独节点进行操作的条件。如果其操作的任何单个节点与括号内的条件匹配,则匹配。 文本是一个选择器,它匹配作为上下文节点的子节点的所有文本节点-它返回一个节点集。 contains是一个对字符串进行操作的函数。如果传递给它一个节点集,则通过返回文档顺序中第一个节点集中节点的字符串值,将该节点集转换为字符串。因此,它只能匹配元素中的第一个文本节点,即诸如此类。因为这不匹配,所以你的结果中没有a。 您需要将此更改为

*是一个与任何元素(如标记)匹配的选择器-它返回一个节点集。 外部[]是一个条件,它在该节点集中的每个单独节点上运行—这里它在文档中的每个元素上运行。 文本是一个选择器,它匹配作为上下文节点的子节点的所有文本节点-它返回一个节点集。 内部[]是在该节点集中的每个节点上操作的条件,这里是每个单独的文本节点。每个单独的文本节点都是括号中任何路径的起点,也可以显式地称为。在括号内。如果其操作的任何单个节点与括号内的条件匹配,则匹配。 contains是一个对字符串进行操作的函数。在这里,它被传递给一个单独的文本节点。。由于它被单独传递给标记中的第二个文本节点,因此它将看到“保加利亚”字符串并能够匹配它。 您可以尝试以下Xpath选项:


发布完整的url到完整的HTML,也许你必须切换到一个框架xpath,你写的对我来说似乎很好。我怀疑,1是这个元素在任何框架内吗?2这个元素在屏幕上是可见的还是我们需要滚动?谢谢你的详细解释!这很有帮助。当我尝试://[text[contains.,'保加利亚']]时,我得到了InvalidSelectorException异常
 //*[contains(text(), 'Bulgaria')])
 //*[text()[contains(.,'Bulgaria')]]
//label[contains(.,'Bulgaria')]
//label[contains(text(),'Bulgaria')]
//div[contains(@class,'country_item')]/label[contains(.,'Bulgaria')]