相同的按钮,不同的文本。硒蟒蛇

时间:2019-03-09 17:40:06

标签: python python-2.7 selenium selenium-webdriver selenium-chromedriver

我有两种类型的按钮,它们具有相同的类,ID等,但是有两点不同。他们所做的动作和文字。一个带有“邀请”文本,另一个带有“消息”。我想在“邀请”时做一些事情,而在“消息”时做其他事情。你知道我要用什么吗?如果呢?还是我必须使用webDriverWait

这是HTML代码。

<button aria-label="Invite" class="button m5"> Invite </button>

<button aria-label="Message" class="button m5"> Message </button>

我尝试了类似的操作,但不起作用。你知道为什么吗?

buttons=driver.find_elements_by_class_name("button m5")
for but in (buttons):
fetch_text=but.text
if "Invite" in fetch_text:
###do somethin
else: ###do somethin

3 个答案:

答案 0 :(得分:1)

由于两个元素的className相同,因此您可以先使用className获取文本,然后将if条件放在文本上,然后进行相应的操作。

例如,在您的情况下,它将是:

fetch_element_text = driver.find_element_by_class_name("button m5").text

if "Invite" in fetch_element_text:
     # Operate according to the Invite button 

elif "Message" in fetch_element_text:
     # Operate according to the Message button

更新后的答案
根据您更新的问题,请尝试使用以下xpath来获取循环中的元素:

buttons=driver.find_elements_by_xpath("//button[@class='button m5']")
print(len(buttons))
for button in buttons:
    fetch_element_text = button.text

现在您可以将上述条件设置为其他条件。

答案 1 :(得分:0)

您可以通过xpath找到每个按钮:

invite = driver.find_element_by_xpath("//button[@aria-label='Invite']")
print(invite.text)   # Invite
message = driver.find_element_by_xpath("//button[@aria-label='Message']")
print(message.text)  # Message

答案 2 :(得分:0)

您不能使用find_elements_by_class_name搜索多个元素。请使用xpathCssSelector

buttons=driver.find_elements_by_xpath("//button[@class='button m5']")
print(len(buttons))
for button in buttons:
    fetch_text = button.text
    if "Invite" in fetch_text:
      print("Invite Button")
    else:
      print("Massage Button")

OR

buttons = driver.find_elements_by_css_selector("button.m5")
print(len(buttons))
for button in buttons:
   fetch_text = button.text
   if "Invite" in fetch_text:
      print("Invite Button")
   else:
      print("Massage Button")