任何人都可以向我解释submit()和click()之间的确切区别吗
与我的情景一样,我想访问此site。当我使用click()
方法点击登录按钮时。网站不允许我访问内部网页,使用submit()
方法时,网站会重定向到另一个网页。
所以,我没有在这两种方法之间得到正确的区别。有关详细信息,请参阅下面的代码段。
driver.get("https://www.ymlp.com/login.html");
driver.manage().window().maximize();
driver.findElement(By.id("T1")).sendKeys("test@gmail.com");
driver.findElement(By.id("T2")).sendKeys("test@1234");
driver.findElement(By.id("loginbtn")).submit();
当您执行上面的代码网站重定向到另一个页面时,现在只需更改最后一行代码,如下面提到的代码,网站不允许我访问内页。
driver.findElement(By.id("loginbtn")).click();
任何人都可以帮我解决这个问题吗?我想知道为什么click()在这里效果不好。
最诚挚的问候。
答案 0 :(得分:1)
即使您手动点击该按钮,它也无法正常工作。这可能是一个应用程序问题。就Submit()而言,它可以用于表单标签内的按钮。基本上你是想提交表格。
如果您仔细查看HTML,当您点击该按钮时,类值将更改为" btn btn-secondary preload isLocked" ,如果您在后端进入控制台窗口中的“网络”选项卡并分析login.js,它们具有一个功能
$(document).ready(function(){$("#T1").focus();$(".removeerrorontype").keypress(function(){$(this).removeClass("error");});$("#loginbtn").click(function(e){if($(this).hasClass("isLocked")){return false;}
所以,我觉得上面的条件会返回false,因此它不会进一步移动。 " isLocked" 在这里有所作为。
答案 1 :(得分:1)
submit()
方法不适用于某些特定的button
或input
字段,而是适用于祖先<form>
元素
它的工作方式与贝娄相似(这是Python
代码,但点应该相同):
element_in_form = driver.find_element_by_id('id_of_ANY_element_inside_form') # this might be any locator, not only id
form = element_in_form.find_element_by_xpath("./ancestor-or-self::form")
driver.execute_script("arguments[0].submit()", form)
只要它出现在element_in_form
内,<form>
(用户名输入,密码输入,登录按钮......)就没有区别了。
Forgot Username/password?
链接也位于同一表单中,出于某种原因,使用submit()
您实际上不是Login
按钮,而是Forgot Username/password?
链接点击...
我可以猜测这是开发人员的错误
答案 2 :(得分:0)
click()和submit()以相同的方式工作,除了submit()查找表单。
您可以使用.click()方法点击任何按钮。点击按钮没有限制。 这意味着元素的类型=&#34;按钮&#34;或者键入=&#34;提交&#34;,。click()方法将适用于两者。 如果按钮位于标签内部或按钮位于标签外部,则click()方法将起作用。
.submit()方法仅用于单击按钮后提交表单。 这意味着元素类型=&#34;提交&#34;和按钮应该在标签内,然后只有submit()才能工作。
在你的情况下,为什么点击不起作用可能不是特定于submit()或click()我想
答案 3 :(得分:0)
尝试以下:为我工作(我猜)
Dim sh as Worksheet, nr as Long
For Each sh In ThisWorkbook.Worksheets
For nr = 14 To 309
with sh
.Range("C" & nr).Copy
.Range("C3").PasteSpecial xlPasteValues
.Range("D" & nr).Copy
.Range("C4").PasteSpecial xlPasteValues
.Calculate
.Range("F2").Copy
.Range("E" & nr).PasteSpecial xlPasteValues
.Range("I2").Copy
.Range("F" & nr).PasteSpecial xlPasteValues
End with
Next nr
Next sh