使用Python Selenium查找元素
有人能帮我找到用Python Selenium点击img的方法吗 我需要找到一个div class=“A”,它有一个div class=“B”,然后单击class=“D”中的img使用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.
...
...
...
...
您可以尝试以下方法:
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…但这与我的问题无关,所以我没有指定它,但谢谢!该站点有很多信息,然后我的查找元素需要很长时间:(