python按钮只能点击一次_点击按钮的代码只能运行一次,但twi不行

在使用Selenium自动化测试时,遇到一个网页按钮只能点击一次的问题,导致第二次点击时抛出错误。代码中使用了`find_element_by_xpath`定位并点击按钮,但第二次点击时出现TypeError。为了解决这个问题,尝试在点击按钮前等待新的结果元素出现,确保按钮仍然有效。同时,发现在点击按钮加载更多结果后,无法对结果进行排序。期望找到一种方式既能多次点击按钮,又能实现排序功能。
摘要由CSDN通过智能技术生成

我正在尝试使用selenium web驱动程序从网站上获取搜索结果。在我搜索了一些东西之后,页面底部会有一个按钮来显示更多的搜索结果。在

网站上的代码是:Weitere anzeigen (+30)

这就是我如何(成功地)按下代码中的按钮:

^{pr2}$

现在,我想再按一次按钮,但现在它不起作用(我检查了Fire Path,XPath.//*[@id='more'u results_link']仍然指向该按钮)。相反,我得到以下错误消息:Traceback (most recent call last):

File "test.py", line 56, in test_Login

moreElement.click()

File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 75, in click

self._execute(Command.CLICK_ELEMENT)

File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 454, in _execute

return self._parent.execute(command, params)

File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute

self.error_handler.check_response(response)

File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 107, in check_response

message = value["value"]["message"]

TypeError: string indices must be integers

你知道怎么解决这个问题吗?理想情况下(更优雅地说),我想实现一个循环,只要按钮存在就单击它(如果没有更多的搜索结果,按钮就会消失)。在

编辑:

以下是我的完整代码:from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWa

这里提供一个简单的用C语言实现IO模拟TWI代码,其中包括了TWI初始化、读取数据、写入数据等基本操作。请注意,这只是一个简单的示例代码,实际使用时需要根据具体的硬件和需求进行修改和优化。 ```c #include <stdio.h> #include <stdint.h> #include <stdbool.h> #define TWI_SCL_PIN GPIO_PIN_5 #define TWI_SDA_PIN GPIO_PIN_6 // 初始化TWI void twi_init(void) { // 设置GPIO为输出模式 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = TWI_SCL_PIN | TWI_SDA_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); } // 发送START信号 bool twi_start(void) { // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); HAL_Delay(1); // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 检查SDA线是否被拉低 if (HAL_GPIO_ReadPin(GPIOB, TWI_SDA_PIN) == GPIO_PIN_RESET) { // SDA线被拉低,START信号发送失败 return false; } // 将SDA线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_RESET); HAL_Delay(1); // 将SCL线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_RESET); HAL_Delay(1); return true; } // 发送STOP信号 void twi_stop(void) { // 将SDA线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_RESET); HAL_Delay(1); // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); HAL_Delay(1); } // 发送一个字节的数据 bool twi_write_byte(uint8_t data) { uint8_t ack = 0; // 发送8位数据 for (uint8_t i = 0; i < 8; i++) { if ((data & 0x80) == 0x80) { // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); } else { // 将SDA线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_RESET); } HAL_Delay(1); // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 将SCL线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_RESET); HAL_Delay(1); data <<= 1; } // 接收ACK信号 // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); HAL_Delay(1); // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 检查SDA线是否被拉低 if (HAL_GPIO_ReadPin(GPIOB, TWI_SDA_PIN) == GPIO_PIN_RESET) { // 收到ACK信号 ack = 1; } // 将SCL线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_RESET); HAL_Delay(1); return ack; } // 读取一个字节的数据 uint8_t twi_read_byte(bool ack) { uint8_t data = 0; // 接收8位数据 for (uint8_t i = 0; i < 8; i++) { data <<= 1; // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 读取SDA线状态 if (HAL_GPIO_ReadPin(GPIOB, TWI_SDA_PIN) == GPIO_PIN_SET) { data |= 0x01; } // 将SCL线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_RESET); HAL_Delay(1); } // 发送ACK信号 if (ack) { // 将SDA线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_RESET); } else { // 将SDA线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SDA_PIN, GPIO_PIN_SET); } HAL_Delay(1); // 将SCL线拉高 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_SET); HAL_Delay(1); // 将SCL线拉低 HAL_GPIO_WritePin(GPIOB, TWI_SCL_PIN, GPIO_PIN_RESET); HAL_Delay(1); return data; } ``` 以上代码实现了TWI的基本操作,可以根据需要进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值