如何通过Selenium和Python在嵌套的div标记中找到按钮?

如何通过Selenium和Python在嵌套的div标记中找到按钮?,python,selenium,selenium-webdriver,xpath,css-selectors,Python,Selenium,Selenium Webdriver,Xpath,Css Selectors,首先,我是Selenium for python的新手。我的问题是: 我想找到自动点击的按钮。这是我的代码按钮: <div class="check-button button-display"> <div class="side-way side-way_left"> <div class="side-button-test middle" > <div class="label">Click here !</

首先,我是Selenium for python的新手。我的问题是: 我想找到自动点击的按钮。这是我的代码按钮:

<div class="check-button button-display">   
<div class="side-way side-way_left">
    <div class="side-button-test middle" >
        <div class="label">Click here !</div>
    </div>
</div>

点击这里!
我尝试:

浏览器。通过css\u选择器(“.side button test.middle”)
查找元素,但它不起作用。有人能帮我吗

试试这个:

wait = WebDriverWait(browser, 20)
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.side-button-test.middle>div')))
element.click()
请检查iframe,如果它在
iframe/frameset
中, 您必须像这样切换Web驱动程序的焦点:

browser.switch_to.frame(web element)
使用当前帧后,如果您将驱动程序的焦点切换回主要内容,这始终是一个良好的做法,您可以为此尝试以下代码:

browser.switch_to.defaultContent();
尽管您也可以尝试此xpath:

//div[contains(text(),'Click here !')]
在这种情况下,代码为:

wait = WebDriverWait(browser, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH,'//div[contains(text(),'Click here !')]')))
element.click()
用Xpath试试这个

find_element_by_xpath("//div[contains(text(),'Click here !')]")

根据您共享的HTML,单击文本为的元素,单击此处您需要诱导WebDriverwait使元素可单击,并且您可以使用以下解决方案:

  • CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.side-way.side-way_left > div.side-button-test.middle > div.label"))).click()
    
  • XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='side-way side-way_left']/div[@class='side-button-test middle']/div[@class='label'][contains(.,'Click here !')]"))).click()
    
注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

谢谢你的信任,但它不起作用。它抛出错误:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:“.side button test middle>div”}您已经编写了这个。side button test middle>div,我向您提供了以下内容:.side button test.middle>div请参阅。在middle>div之前,您的案例中缺少它。顺便说一句,我已经更新了我的答案,看看吧。你在这个问题上花了这么多时间,我们甚至不知道什么是问题,什么是错误has@AndreiSuvorkov:是的,这是真的。它不工作是什么意思?如果您没有具体说明问题所在,我们如何帮助您?您得到的错误是什么?@LoiHu我们的意思是“它不工作”,您应该提供错误堆栈,以便我们可以跟踪异常。