我试图让一个python webdriver加载一个网页,然后声明true并运行一个打印命令,如果文本或对象存在,如果不是,我希望它只需继续运行我的循环。我是Python的noob,并且已经从Learn Python的Hard Way学习,并阅读文档。我花了最后一天左右,试图让我的代码找到文本或元素,但它不反馈信息...这是我的代码到目前为止减去关于转到网页的顶部,我只是在这个计数循环的东西断言逻辑。学习在Python中使用Assert和Asserttrue来实现硒web驱动程序
count = 1000.00
while count < 1000.03:
driver.find_element_by_id("select").clear()
driver.find_element_by_id("select").send_keys(str(count))
time.sleep(1)
driver.find_element_by_id("BP").click()
driver.find_element_by_id("BP").click()
count += 0.01 ## increases count to test
highervalue = driver.find_element_by_link_text("Select Error")
assertTrue(driver.link_contains_match_for("")) ##could also be, ##text_containt_match_for("ex") or driver.assertTrue(element in WEBPAGE)??
print 'Someone is %.7r' %count
else:
print 'I have %.7r' %count
time.sleep(1)
然后循环再次开始。我遇到的问题是我想在网页上以某种形式,链接或文本找到“选择错误”,然后如果它在那里打印我一个味精,如果不是,继续我的循环。
是它更好地使用断言/ asserttrue,或像
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
或
我已经搜索有关的一些其他的例子,可以使用:
self.assertTrue(self.is_element_present(By.ID, "FOO"))
self.assertTrue(self.is_element_present(By.TEXT, "BAR"))
self.assertTrue(self.is_text_present("FOO"))
self.assertTrue(self.driver.is_text_present("FOO"))
有人可以让当我在网页中找到某些东西时,我知道如何编写该部分,并且如果找到了它,会给我提供反馈?
谢谢,我读了一下等待和其他问题。你认为在这个循环中检查文本条件的最好方法是什么?我不认为我需要它来等待条件,我希望它尽可能快地检查每个数字,直到页面加载计数错误。 – Alan 2015-02-23 22:27:20
我可以使用预期的参数吗? selenium.webdriver.support.expected_conditions.text_to_be_present_in_element(locator,text_) 基础:对象 期望检查给定文本是否存在于指定元素中。定位器,文本。 但是,如果存在,我该如何打印它,或者如果不存在,只是继续循环而不打印? – Alan 2015-02-23 22:37:27
或甚至这我也无法去工作,当然因为驱动程序查找元素不返回True或False值,如果它确实我会在这里我的答案。那么,我怎么能找到这个文本呢? error = driver.find_element_by_link_text(“Select Error”)。文字 \t \t \t如果(错误== true):表明 \t \t \t \t打印 '有人为%.7r' %计 \t \t \t其他: \t \t \t \t打印 '我有%.7r' %计 – Alan 2015-02-23 22:56:44