我有这个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>
我尝试使用text = Bandwidth Settings
选择 span ,然后点击类名为callout
的 div 。
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:消息:未知错误:元素
答案 0 :(得分:2)
一种方法是像这样使用find_element_by_xpath(xpath)
:
if driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]") is None:
print "Not found"
else:
print "Found"
...
要获得完全匹配(正如您在评论中所要求的那样),请使用
"//span[text()='Bandwidth Settings']"
在您的EDITED问题上,请尝试以下方法之一:
直接找到(如果没有其他匹配元素):
driver.find_element_by_css_selector("div[style*='/images/telenet/expand.png']")
通过跨度定位(假设该级别没有其他div):
driver.find_element_by_xpath("//span[contains(.,'Bandwidth Settings')]/../div")
答案 1 :(得分:0)
您需要使用的代码:
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')
答案 2 :(得分:0)
如果你在页面上有嘶嘶声(jQuery),你可以按照文字选择跨度:
$(&#34; span:包含(&#39;带宽设置&#39;)&#34;)
使用C#绑定
将选择使用哪个By.CssSelector("span:contains('Bandwidth Settings')")