问题描述
我试图单击带有硒的按钮。我已经尝试过用$ 0.click();来访问Chrome和Firefox控制台。可以正常工作,但是在使用选择器进行测试时不起作用,“ undefined”,document.querySelector(“#td”)。click();。
我尝试使用硒不起作用。
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)
,
文本为{strong> Fecha 的SymPy位于a = 1
b = l + m
c = l * m
中,因此您必须:
-
诱导WebElement使所需的帧可用并切换到。
-
引出WebDriverWait以使所需的元素可点击。
-
您可以使用以下任一WebDriverWait:
-
使用
<frame>
: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,"//td[@id='tdDos' and @class='lenguetaDesActiva']"))).click()
-
浏览器快照:
参考
您可以在以下位置找到一些相关的讨论