如何让selenium执行两个不同的按钮



我让selenium尝试一个接一个地执行两个不同的按钮,根据我尝试的方法,我会得到不同的错误。这就是代码的样子

wait=WebDriverWait(driver, 10)
elem=wait.until(EC.element_to_be_clickable((By.XPATH, "//ul[@data-componentname='gender']//span[text()='Male']/preceding::input[@type='button']")))
driver.execute_script("arguments[0].click();", elem)

我正在尝试实现下面的

joinBtn=wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@value='JOIN US']"))).click()

然而,每次我尝试时,我都会收到一个错误,比如

selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot read property 'click' of undefined

JOIN US html有一个动态ID,所以每次刷新都是不同的

<div id="712eb3a9-b9a7-4cf7-8c0f-b4ae2b710e36" class="submit-button joinSubmit component blurred">
<input id="f357cd20-f2d5-4b1c-a379-8ad475a10daf" type="button" value="JOIN US">
</div>

调用click()不会返回任何内容。因此,当您的程序试图将null分配给joinBtn时,您会看到错误:

selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot read property 'click' of undefined

我刚刚创建了两个不同的函数,并在另一个之后运行了1

def male():
elem=wait.until(EC.element_to_be_clickable((By.XPATH, "//ul[@data-componentname='gender']//span[text()='Male']/preceding::input[@type='button']")))
driver.execute_script("arguments[0].click();", elem)

def join():
joinBtn=wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@value='JOIN US']"))).click()
driver.execute_script("arguments[0].click();", joinBtn)

似乎存在冲突,因此每次执行死刑时将他们分开就解决了这个问题。execute_script成员希望同时单击这两个按钮,因此最好将它们分开。

相关内容

  • 没有找到相关文章

最新更新