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

时间:2018-07-05 09:54:46

标签: python selenium selenium-webdriver xpath css-selectors

首先我是Selenium的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>

我尝试:

browser.find_element_by_css_selector(".side-button-test.middle"),但是它不起作用。任何人都可以帮助我。

3 个答案:

答案 0 :(得分:0)

尝试:

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中), 您必须像这样

切换 webdriver 的焦点:
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()

答案 1 :(得分:0)

尝试使用Xpath

regex

答案 2 :(得分:0)

根据您共享的HTML,点击带有点击此处!”文本的元素!,您需要诱使 WebDriverwait 使元素可点击< / em>,则可以使用以下解决方案:

  • CSS_SELECTOR

    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