document.querySelector( ).点击();硒不工作 $0.click();不明确的

document.querySelector( ).click(); not working selenium $0.click(); undefined

我正在尝试使用 selenium 单击按钮。我已经尝试使用 Chrome 和 Firefox 控制台 $0.click();并且有效,但在使用选择器进行测试时它不起作用,“未定义”,document.querySelector(“#td”).click();.

我尝试使用 selenium 无效。

HTML:

<td id="td" onclick="if(top.body) Len('td')" class="lenDesActiv">Date</td>

我尝试了以下方法:

driver.execute_script('document.querySelector("td#tdDos.lenguetaActiva").click();')
driver.execute_script('document.querySelector("td#").click();')
driver.execute_script('document.querySelector("#td").click();')
driver.execute_script('document.querySelector("td#td").click();')
driver.execute_script('document.getElementById("td").click();')
driver.findElement(By.id("td")).click();
document.getElementById("td").addEventListener("click", function(){
    alert("hello world");
});

loginelement = driver.find_element(By.ID, 'td')
driver.execute_script("arguments[0].click();", loginelement)

试试这个。

先切换到相框。

driver.switch_to.frame("body")

等待元素可点击。

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, '//td[@id="td"]')))

使用 JavaScriptExecutor 单击元素。

driver.execute_script('document.querySelector("td").click()')

您的问题首先是 iframe 切换到它。

driver.get("https://webpage.com")
driver.switch_to.frame(driver.find_element_by_xpath("/html/frameset/frameset/frame[2]"))
loginelement = driver.find_element(By.ID, 'td')
driver.execute_script("arguments[0].click();", loginelement)

文本为 Fecha<frame> 中,因此您必须:

  • 诱导 WebDriverWait 所需的 帧可用并切换到它

  • 诱导 所需的 元素可点击

  • 您可以使用以下任一项:

  • 使用CSS_SELECTOR:

    driver.get('https://your_website.com/')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame[name='body']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td#tdDos.lenguetaDesActiva"))).click()
    
  • 使用XPATH:

    driver.get('https://your_website.com/')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@name='body']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@id='tdDos' and @class='lenguetaDesActiva']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:


参考

您可以在以下位置找到一些相关讨论:

  • Switch to an iframe through Selenium and python