我有两种类型的按钮,具有相同的类,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
由于两个元素的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
现在你可以使用与上面提到的相同的if else条件。
你可以通过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
你不能使用find_elements_by_class_name
搜索多个元素。请使用xpath
或CssSelector
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")
要么
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")