在 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()
下面是 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()