在 selenium python 中使用 If 函数

use of If function in selenium python

下面是 HTML,我想在这里检查 'test',如果存在,我想点击 rtPlus

</div></li><li class="rtLI rtLast"><div class="rtBot rtSelected TreeNodeSelect sonetto-children">
                                <span class="rtSp"></span><span class="rtPlus"></span><span class="rtIn TreeNode sonetto-children">test</span>

enter image description here

我的代码

ul = driver.find_element_by_xpath("//div[@id='ctl00_ctl00_ContentPlaceHolderContent_MainCategoriserContent_Results1_ResultsTree1_radTree']/ul//ul")
ul = ul.find_element_by_xpath("./li[./div/span[text()='{}']]/ul//li[./div/span[text()='{}']]".format(levels[0],levels[1]))
if ul.text == 'test':
    ul = ul.find_element_by_xpath("//span[@class='rtPlus']").click()

希望这些信息足够了请告诉我点击加号图标可以做什么

你应该做的原始版本是:

ul = driver.find_element_by_xpath("text locator")
button = ul.find_element_by_xpath("button locator")
if ul.text == 'test':
    button.click()

如果此按钮位于您的 ul 元素内,则适用。

when i run my code it opens the first plus sign on the page but I want it to open the plus sign next to test

听起来您点击的加号与您想要的加号不同。您需要编写更复杂的算法来找到要单击的正确元素。我的建议是这样的:

get the <ul> element
get all <li> elements inside the <ul>
for each <li>
    if it has "test" in the text
        click on it

因此您需要了解如何获取与给定 css 选择器匹配的所有元素。然后你需要学习如何遍历这些元素。

您可以使用任一 xpath 来完成您的任务。

找到带有文本的 span 标签作为测试,然后使用 previous-sibling.

driver.find_element_by_xpath("//span[text()='test']/preceding-sibling::span[@class='rtPlus']").click()

或查找 li 标签,其 child 标签文本为 test 并找到 next child.

driver.find_element_by_xpath("//li[.//span[text()='test']]//span[@class='rtPlus']").click()

如果您知道 ul 标签,则方法相同。

ul.find_element_by_xpath(".//span[text()='test']/preceding-sibling::span[@class='rtPlus']").click()

ul.find_element_by_xpath(".//li[.//span[text()='test']]//span[@class='rtPlus']").click()