在selenium python中使用If函数
下面是HTML,我想在这里做一个“测试”的if检查,如果存在,我想点击rtPlus在selenium python中使用If函数,python,selenium,xpath,webdriver,Python,Selenium,Xpath,Webdriver,下面是HTML,我想在这里做一个“测试”的if检查,如果存在,我想点击rtPlus </div></li><li class="rtLI rtLast"><div class="rtBot rtSelected TreeNodeSelect sonetto-children"> <span class="rtSp">
</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>
希望这些信息足够,请告诉我可以在这里做些什么,单击加号图标您应该做的原始版本是:
ul = driver.find_element_by_xpath("text locator")
button = ul.find_element_by_xpath("button locator")
if ul.text == 'test':
button.click()
如果此按钮位于您的
ul
元素内,则适用于这种情况。您应该执行的基本操作是:
ul = driver.find_element_by_xpath("text locator")
button = ul.find_element_by_xpath("button locator")
if ul.text == 'test':
button.click()
如果此按钮位于ul
元素内,则适用于这种情况
当我运行代码时,它会打开页面上的第一个加号,但我希望它打开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选择器匹配的所有元素。然后,您需要学习如何循环这些元素
当我运行代码时,它会打开页面上的第一个加号,但我希望它打开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
标记,然后使用上一个同级
driver.find_element_by_xpath("//span[text()='test']/preceding-sibling::span[@class='rtPlus']").click()
或者查找li
标记其子项
将文本标记为测试
,然后查找下一个子项
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()
或
您可以使用任一xpath来完成任务 查找带有文本作为测试的
span
标记,然后使用上一个同级
driver.find_element_by_xpath("//span[text()='test']/preceding-sibling::span[@class='rtPlus']").click()
或者查找li
标记其子项
将文本标记为测试
,然后查找下一个子项
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()
或
你的问题是什么?运行此代码时会发生什么情况?您希望它做什么呢?旁注:不要将同一个变量用于多种用途。相反,你可以将每件事分配给一个新的变量。为页面添加html代码或链接到itI。我看不出你在这里发布的代码有任何错误。我建议您进行一些调试,以确保您正在选择您认为是的元素。@arjunmurirathinam请在您的问题中添加对运行代码时发生的情况的描述。你关于点击错误加号的评论是一个重要的细节,没有包含在你的原始问题中。你的问题是什么?运行此代码时会发生什么情况?您希望它做什么呢?旁注:不要将同一个变量用于多种用途。相反,你可以将每件事分配给一个新的变量。为页面添加html代码或链接到itI。我看不出你在这里发布的代码有任何错误。我建议您进行一些调试,以确保您正在选择您认为是的元素。@arjunmurirathinam请在您的问题中添加对运行代码时发生的情况的描述。你关于点击错误加号的评论是一个重要的细节,没有包含在你的原始问题中。这与OP发布的代码有何不同?他有两个
ul
变量,并且在正确定义定位器方面存在一些问题。我同意使用不同的变量是一个好主意。但是,单凭这一点不可能解决OP的问题。是的,我确信他在正确定义定位器方面存在问题,但你的回答没有提到这一点,也没有给出如何制作正确定位器的任何细节。这与OP发布的代码有什么不同?他有两个ul
变量,在正确定义定位器方面存在一些问题。我同意使用不同的变量是一个好方法主意但是,仅此一点不可能解决OP的问题。是的,我确信他在正确定义定位器方面存在问题,但您的回答没有提到这一点,也没有给出如何制作正确定位器的任何细节。这帮了大忙,谢谢!!!这帮了大忙,谢谢!!!