Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在selenium python中使用If函数_Python_Selenium_Xpath_Webdriver - Fatal编程技术网

在selenium python中使用If函数

在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">

下面是HTML,我想在这里做一个“测试”的if检查,如果存在,我想点击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>

希望这些信息足够,请告诉我可以在这里做些什么,单击加号图标

您应该做的原始版本是:

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的问题。是的,我确信他在正确定义定位器方面存在问题,但您的回答没有提到这一点,也没有给出如何制作正确定位器的任何细节。这帮了大忙,谢谢!!!这帮了大忙,谢谢!!!