检查文本中的单词,并一次打印()一个命令

时间:2019-03-20 15:40:57

标签: python-3.x selenium selenium-webdriver

使用这些命令,我​​得到了三个句子。

AnyText = driver.find_elements_by_xpath('AnyXpath')
    for AnyText1 in AnyText:
    print(AnyText1.text)

在控制台中,我得到类似的东西:

** 1)你好,我叫约翰

** 2)你好,我叫马克

** 3)你好,我叫亚历克斯。

如何检查所有三个句子的单词“ name” 如果单词在句子(元素)中,请打印(“ OK”),否则请打印(“ ERROR”)。 我尝试:

    AnyText = driver.find_elements_by_xpath('AnyXpath')
    Text = 'name'
    if all(Text in AnyText1 for two in AnyText1):
        print('OK')
    else:
        print('ERROR')

但是此方法仅检查第一个元素(第一个句子)。我也尝试过这样的事情

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'
for AnyText1 in AnyText:
    if all(Text in AnyText1):
        print('OK')
    else:
        print('ERROR')

但是我得到很多次OK或ERROR

UPD: 关于文字有疑问,我在您的帮助下找到了答案。现在我想了解数字)

我有一个循环或多或少地检查下一个数字。如果更多,则写入ERROR,如果更少,则写入OK

sort_month=driver.find_element_by_xpath('/html/body/div[6]/div[2]/div/div[1]/div/div[13]/table/thead/tr/th[3]/a[4]').click()

month2=driver.find_element_by_xpath('//*[starts-with(@id, "td_")]/td[3]/span[3]')
month2=month2.text.replace("'", "").replace(" ", "")
buffer = 0
if int(month2) > buffer:
    print()
buffer = int(month2)
month1=driver.find_elements_by_xpath('//*[starts-with(@id, "td_")]/td[3]/span[3]')
for spisok_month in month1:
    spisok_month = spisok_month.text.replace("'", "").replace(" ", "")
    if int(spisok_month) > buffer:
        print('ERROR')
    elif int(spisok_month) < buffer:
        print('OK')
    else:
        print('==')
    buffer = int(spisok_month)

在这里,我也只想看到OK或ERROR一次。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

问题似乎出在您的第一个代码段的循环缩写。基本上应该如下所示:

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'
if all(Text in AnyText1.text for AnyText1 in AnyText):
    print('OK')
else:
    print('ERROR')

更新:

关于问题的更新部分,这是一种不同的实现,因为您必须在每次迭代中更新条件。出于可读性考虑,扩展此扩展可能很有意义:

outcome = 'OK'
for spisok_month in month1:
    spisok_month = spisok_month.text.replace("'", "").replace(" ", "")
    if int(spisok_month) > buffer:
        outcome = 'ERROR'
    elif outcome == 'OK' and int(spisok_month) == buffer:
        outcome = '=='
    buffer = int(spisok_month)
print(outcome)

注意:此更新几乎是一个单独的问题。这意味着您的第一个问题不能代表实际问题,或者您应该在单独的帖子中提问

答案 1 :(得分:0)

在您的代码中,AnyText1是一个WebElement,而不是文本。您应该使用AnyText1.text来获取文字,然后它将起作用:

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'

# AnyText1 is a WebElement and you should get text
if all(Text in AnyText1.text for AnyText1 in AnyText):
    print('OK')
else:
    print('ERROR')

请选中coding conventions以改善代码风格。