Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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
使用Python Selenium查找元素_Python_Html_Selenium - Fatal编程技术网

使用Python Selenium查找元素

使用Python Selenium查找元素,python,html,selenium,Python,Html,Selenium,有人能帮我找到用Python Selenium点击img的方法吗 我需要找到一个div class=“A”,它有一个div class=“B”,然后单击class=“D”中的img ... ... ... ... 您可以尝试以下方法: if driver.find_elements_by_xpath("//div[@class = 'A']/div[@class ='B']"): # Finding the element in case it exists.

有人能帮我找到用Python Selenium点击img的方法吗

我需要找到一个div class=“A”,它有一个div class=“B”,然后单击class=“D”中的img


...
...
...
...
您可以尝试以下方法:

if driver.find_elements_by_xpath("//div[@class = 'A']/div[@class ='B']"):  # Finding the element in case it exists.
    image_to_click = driver.find_element_by_xpath("//div[@class = 'D']//img[@class ='Y']")
    image_to_click.click() # Clicking on the image.

要检查元素是否存在,可以使用driver.find_元素。
它返回与传递的定位器匹配的web元素列表。
如果元素存在,则返回在Python中被视为布尔值
true
的非空列表,否则返回在Python中被识别为
false
的空列表。
UPD:
根据最新的要求,您的代码可以是这样的:

a_list = driver.find_elements_by_xpath("//div[@class='A']")
for a_el in a_list:
    if a_el.find_elements_by_xpath(".//div[@class ='B']"):
       a_el.find_element_by_xpath(".//img[@class ='Y']").click() 
谢谢你的帮助

最后的代码是:

skin_list = driver.find_elements_by_class_name("B")
if len(skin_list) != 0:
     skin_list[0].find_element_by_xpath("..//div[@class='D']").click()

但是现在,我的新问题是“skin\u list=driver.find\u elements\u by\u class\u name”需要很长时间才能搜索…

对不起,我忘了指定每个div class=“a”在div class=“D”中都有一个img。。。但所有div class=“A”不一定都有B类!!!然后我需要选择class=“A”的IMG,它有一个class=“B”,我希望这能帮助你理解,所以,只有当父div中有一个类名为B的div,且该div的类为A时,你才想单击该父div中的类为Y的IMG,对吗?如果是,请参阅更新的答案所有class=“A”只有一个class=“B”!但是对于您的代码,这不会单击代码的第一个img class=“Y”吗?但是我想你明白我需要什么,我的英语是有限的,那么我希望我能理解你说的XD你是什么意思:有许多元素位于
//div[@class='A']
所以我们想检查
//div[@class='B']
在每个这样的类元素中以及每个
//div[@class='A']
包含
//div[@class='B']
你想点击里面的
//img[@class='Y']
//div[@class='A']
?对吗?我的英语也不是母语:)是的,div class='A'定位了很多元素!但是只有一个class='A'包含class='B',那么我需要class='A'的img其中包含class=“B”。我想现在应该更好了!问我你是否明白我的意思XD你确定你复制的是正确的吗?应该是1点,而不是2点:
skin\u list[0]。通过xpath(../div[@class='D'])查找元素。单击()
,而不是
skin\u list[0]。通过xpath(../div[@class='D'])查找元素。单击()
是的,我意识到要单击的不是图像而是div…但这与我的问题无关,所以我没有指定它,但谢谢!该站点有很多信息,然后我的查找元素需要很长时间:(