Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何确保脚本仅在按钮存在时单击?_Python 3.x_Selenium - Fatal编程技术网

Python 3.x 如何确保脚本仅在按钮存在时单击?

Python 3.x 如何确保脚本仅在按钮存在时单击?,python-3.x,selenium,Python 3.x,Selenium,我正在编写一个脚本来测试web门户。但是,我需要将所有协议更改为SMB服务器,以便执行测试。我需要使我的脚本仅在SMB服务器存在时才单击按钮更改为SMB服务器,因为当它已处于SMB服务器模式时,按钮不存在 现在,我只编写了要单击“更改为SMB服务器模式”的部分 这是我要单击以更改为SMB服务器模式的代码: driver.find_element_by_id("smb_server").click() alert=driver.switch_to_alert() alert.

我正在编写一个脚本来测试web门户。但是,我需要将所有协议更改为SMB服务器,以便执行测试。我需要使我的脚本仅在SMB服务器存在时才单击按钮更改为SMB服务器,因为当它已处于SMB服务器模式时,按钮不存在

现在,我只编写了要单击“更改为SMB服务器模式”的部分

这是我要单击以更改为SMB服务器模式的代码:

   driver.find_element_by_id("smb_server").click()
    alert=driver.switch_to_alert()
    alert.accept()
这是更改为SMB服务器模式后的html:

 <span class="table-head">
    Current Protocol
    </span>

现行协议

您可以使用findElement而不是findElement。这将返回一个未找到匹配项的空列表,以便避免出现异常

Boolean isAvailable = driver.findElements(By.yourLocator).size() > 0
这是一个假设,即按钮将存在/不存在,且未启用/禁用。

请尝试以下内容(在java中,请更改为相应的语言):

Boolean isPresent=driver.findElements(By.id(“您的id”)).size()>0;
如果(显示){
}

您可以测试元素是否存在,然后单击它(如果存在)

button = driver.find_elements(By.ID, "smb_server")
if button
    button[0].click()

请参阅更多信息,我正在使用Python Selenium编写脚本,布尔值下面似乎有一条红色下划线。我对Python和Selenium还不熟悉,不知道该如何解决回复太晚的问题。1.Python中没有布尔值。2.在python中,需要使用如下所示的find元素
driver.find_元素(By.XPATH,“//a”)
如果不是元素:
//列表为空,表示不存在任何元素如何将其更改为Python语言?很抱歉,我是新手,我似乎无法初始化对否决票的反馈?我解释了它的功能并提供了代码。
button = driver.find_elements(By.ID, "smb_server")
if button
    button[0].click()