通过与特定文本标记名称选择元素 - 硒
问题描述:
我有这样的HTML通过与特定文本标记名称选择元素 - 硒
<div class="callout callout-accordion" style="background-image: url("/images/expand.png");">
<span class="edit" data-pk="bandwidth_bar">Bandwidth Settings</span>
<span class="telnet-arrow"></span>
</div>
我想选择跨度文本= Bandwidth Settings
,并点击DIV与类名= callout
。
if driver.find_element_by_tag_name("span") == ("Bandwidth Settings"):
print "Found"
time.sleep(100)
driver.find_element_by_tag_name("div").find_element_by_class_name("callout").click()
print "Not found"
time.sleep(100)
我一直得到
Testing started at 1:59 PM ...
Not found
Process finished with exit code 0
我错过了什么?
选择父股利
if driver.find_element_by_xpath("//span[text()='Bandwidth Settings']") is None:
print "Not Found"
else :
print "Found"
span = driver.find_element_by_xpath("//span[text()='Bandwidth Settings']")
div = span.find_element_by_xpath('..')
div.click()
我
WebDriverException: Message: unknown error: Element
答
一种方法是使用find_element_by_xpath(xpath)
这样的:
if driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]") is None:
print "Not found"
else:
print "Found"
...
精确匹配(如您在你的评论中要求)u SE "//span[text()='Bandwidth Settings']"
在已编辑的问题,请尝试以下之一:
直接找到(如果没有其他匹配的元素):
driver.find_element_by_css_selector("div[style*='/images/telenet/expand.png']")
通过跨找到(前提是没有其他分区该级别):
driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]/../div")
答
,你需要使用的代码:
from selenium.common.exceptions import NoSuchElementException
try:
span = driver.find_element_by_xpath('//span[text()="Bandwidth Settings"]')
print "Found"
except NoSuchElementException:
print "Not found"
如果您需要选择父div
元素:
div = span.find_element_by_xpath('./parent::div')
答
如果你的页面(jQuery的),您可以通过他们的文字,像这样选择跨度上的咝咝声:
$(“跨度:包含( '带宽设置')“)
这将像这样使用C#绑定
By.CssSelector("span:contains('Bandwidth Settings')")
被选择
driver.find_element_by_tag_name(“span”)会找到多个元素 –
哦。我懂了。我怎样才能选择一个'文字=='字符串'跨度? – ihue
请尝试使用类而不是跨度 driver.FindElement(By.ClassName(“Edit”))。文本 –