Selenium:如何单击 html 元素的第一个 child

Selenium : how to click on the first child of a html element

我正在做一个 Selenium 项目,我需要点击 xpath 得到的这个 ul 的第一个 child:

bot.find_element_by_xpath('//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul').click()

你能帮帮我吗?

您可以使用 XPATH 单击第一个列表项

bot.find_element_by_xpath('//[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/li[1]').click()

如果想点击第二个三分之一等等只需更改/li[number you want]

识别<ul>元素的第一个child:

//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul

您必须使用 tag_name and/or child/descendant 元素的属性。

如果第一个 child(后代)是 <li>,您必须在末尾附加 /li,如下所示:

//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/li
    

如果第一个 child(后代)是 <ol>,您必须在末尾附加 /ol,如下所示::

//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/ol

现在,要单击需要为 element_to_be_clickable() 引入 的元素,您可以使用以下任一 定位器策略

//in case of descendant li
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/li"))).click()
//in case of descendant ol
WebDriverWait(bot, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id="mailappcomponent"]/div/div/div[2]/div/div/div[2]/div/div[1]/ul/ol"))).click()

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC