我需要在没有类或id的嵌套div中找到某个文本。
这是html的结构。
<div class="active_row">
<div class="outcomes">
<div class="event_outcome" onclick="doSomething">
<div>Target Text</div>
</div>
</div>
</div>
我尝试使用here中的示例直接访问文本。
driver.find_elements_by_xpath("//div[contains(., 'Target Text')]")
这将返回包含目标文本的元素列表,但是当我对它们运行click方法时没有任何反应。
设置此查询以查找文本然后单击event_outcome
类的div的最佳方法是什么?
答案 0 :(得分:2)
要选择具有event_outcome
类的div,可以在XPath中添加谓词以检查类属性值:
//div[contains(., 'Target Text') and @class='event_outcome']
或添加谓词以检查onclick
属性是否存在:
//div[contains(., 'Target Text') and @onclick]
答案 1 :(得分:1)
设置此查询以查找文本然后单击带有event_outcome类的div的最佳方法是什么?
您应该尝试使用xpath
下面的<div class="event_outcome" onclick="doSomething">
,其中Target Text
将返回文字element = driver.find_element_by_xpath(".//div[contains(., 'Target Text') and @class='event_outcome']")
print(element.text)
element.click()
,这将满足您的所有需求,如下所示: -
element = driver.find_element_by_xpath(".//div[normalize-space()='Target Text' and @class='event_outcome']")
print(element.text)
element.click()
或者您也可以使用xpath的normalize-space()
函数获得内部文本的完全匹配,如下所示: -
public struct Point
{
public int x;
public int y;
}
Point[] directions = new Point[]
{
new Point() {x=0,y=1 },
new Point() {x=0,y=-1 },
new Point() {x=1,y=0 },
new Point() {x=-1,y=0 }
};